• Android访问服务器


    做cocos2dx已经有好一段时间了,在这段时间里,也不断接触android。一直没有时间写下自己的工作经历,今天抽点时间记下一段。

    关于android访问服务器获取数据的方法:

    传输协议使用http通信方式,本次使用的是POST。http协议的pathname存放在变量cmd中,协议的内容格式为json。

     1 String urlStr = "http://219.234.95.44:6789" + cmd;//"10.1.30.220"; 
     2 //            urlStr = urlStr + "/getName";
     3 //            urlStr = "http://www.baidu.com/";
     4             URL url = null;
     5             String result = null;
     6             try {
     7                 url = new URL(urlStr);
     8                 HttpURLConnection urlConn = (HttpURLConnection)url.openConnection();
     9                 urlConn.setDoInput(true);
    10                 urlConn.setDoOutput(true);
    11                 urlConn.setRequestMethod("POST");
    12                 urlConn.setUseCaches(false);
    13 //                urlConn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
    14                 urlConn.setRequestProperty("Content-Type", "application/x-java-serialized-object");
    15                 urlConn.setRequestProperty("Charset", "utf-8");     
    16                 urlConn.setConnectTimeout(20000);
    17                 urlConn.connect();
    18 
    19                 DataOutputStream dop = new DataOutputStream(urlConn.getOutputStream());
    20                 if(param != null)
    21                     dop.writeBytes(param);
    22                 dop.flush();
    23                 dop.close();
    24                 
    25                 BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(urlConn.getInputStream()));
    26                 
    27                 String line = null;
    28                 while((line = bufferedReader.readLine()) != null)
    29                 {
    30                     System.out.println(line);
    31                     result = (result == null) ? line : result + line;
    32                 }
    33                 bufferedReader.close();
    34                 urlConn.disconnect();     
    35             } catch (MalformedURLException e) {
    36                 // TODO Auto-generated catch block
    37                 e.printStackTrace();
    38             } catch (IOException e) {
    39                 // TODO Auto-generated catch block
    40                 e.printStackTrace();
    41             }
    42             
    43             Message msg = new Message();         
    44             Bundle data = new Bundle();      
    45             data.putString("cmd", cmd);
    46             data.putString("result", result);   
    47             msg.setData(data);         
    48             handler.sendMessage(msg);     

    这段函数不要写在主界面线程,容易报异常。第三行为测试代码。

    检测服务器是否运行正常,可以使用命令行Telnet功能,打开命令行输入Telnet,如果提示这个不是内部命令,请打开控制面板,选择程序,选择打开或关闭Windows功能,在弹出的对话框中查看“Telnet客户端”这一项,并且勾选上,点击确定关闭。下面就可以再命令行中使用Telnet命令了。

    输入完成后输入“open 219.234.95.44 6789”,后面的端口号不能省略,并且前面不能加冒号。然后回车,如果没有提示错误,说明服务器正常。这段代码比较简单,这里就不加注释了。

    其中第19行到第23行是设置向服务器发送数据的参数,第25行是发送请求并返回服务器应答的数据。

  • 相关阅读:
    Python之路【第十六篇】:冒泡排序、斐波那契数列、用户登陆程序
    Python之路【第十五篇】:文件操作
    Python之路【第十四篇】:Python的内置函数
    Python之路【第十三篇】:isinstance()函数与lambda表达式及函数参数的传递方式
    Python之路【第十二篇】:函数
    Python之路【第十一篇】:三目运算、不同数据类型的存储方式及深浅拷贝(copy模块)、列表推导式
    Python之路【第十篇】:索引与切片的不同
    Python之路【第九篇】:字符串与字节的相互转换以及2.7与3输出方式的不同
    Python之路【第八篇】:enumerate、range与xrange
    scala学习之类和对象
  • 原文地址:https://www.cnblogs.com/Stark/p/3868762.html
Copyright © 2020-2023  润新知