首页 > 代码库 > Android访问服务器

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 block37                 e.printStackTrace();38             } catch (IOException e) {39                 // TODO Auto-generated catch block40                 e.printStackTrace();41             }42             43             Message msg = new Message();         44             Bundle data = http://www.mamicode.com/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行是发送请求并返回服务器应答的数据。