Android的三种网络通信方式.docx_第1页
Android的三种网络通信方式.docx_第2页
Android的三种网络通信方式.docx_第3页
Android的三种网络通信方式.docx_第4页
Android的三种网络通信方式.docx_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Android的三种网络通信方式分类:Android2012-07-13 11:2312295人阅读评论(7)收藏举报android网络layoutjavanullsocketAndroid平台有三种网络接口可以使用,他们分别是:.*(标准Java接口)、Org.apache接口和A.*(Android网络接口)。下面分别介绍这些接口的功能和作用。1.标准Java接口.*提供与联网有关的类,包括流、数据包套接字(socket)、Internet协议、常见Http处理等。比如:创建URL,以及URLConnection/HttpURLConnection对象、设置链接参数、链接到服务器、向服务器写数据、从服务器读取数据等通信。这些在Java网络编程中均有涉及,我们看一个简单的socket编程,实现服务器回发客户端信息。服务端:javaview plaincopy1. publicclassServerimplementsRunnable2. Override3. publicvoidrun()4. Socketsocket=null;5. try6. ServerSocketserver=newServerSocket(18888);7. /循环监听客户端链接请求8. while(true)9. System.out.println(start.);10. /接收请求11. socket=server.accept();12. System.out.println(accept.);13. /接收客户端消息14. BufferedReaderin=newBufferedReader(newInputStreamReader(socket.getInputStream();15. Stringmessage=in.readLine();16. /发送消息,向客户端17. PrintWriterout=newPrintWriter(newBufferedWriter(newOutputStreamWriter(socket.getOutputStream(),true);18. out.println(Server:+message);19. /关闭流20. in.close();21. out.close();22. 23. catch(IOExceptione)24. e.printStackTrace();25. finally26. if(null!=socket)27. try28. socket.close();29. catch(IOExceptione)30. e.printStackTrace();31. 32. 33. 34. 35. 36. /启动服务器37. publicstaticvoidmain(Stringargs)38. Threadserver=newThread(newServer();39. server.start();40. 41. 客户端,MainActivityjavaview plaincopy1. publicclassMainActivityextendsActivity2. privateEditTexteditText;3. privateButtonbutton;4. /*Calledwhentheactivityisfirstcreated.*/5. Override6. publicvoidonCreate(BundlesavedInstanceState)7. super.onCreate(savedInstanceState);8. setContentView(R.layout.main);9. 10. editText=(EditText)findViewById(R.id.editText1);11. button=(Button)findViewById(R.id.button1);12. 13. button.setOnClickListener(newOnClickListener()14. Override15. publicvoidonClick(Viewv)16. Socketsocket=null;17. Stringmessage=editText.getText().toString()+rn;18. try19. /创建客户端socket,注意:不能用localhost或,Android模拟器把自己作为localhost20. socket=newSocket(,18888);21. PrintWriterout=newPrintWriter(newBufferedWriter(newOutputStreamWriter22. (socket.getOutputStream(),true);23. /发送数据24. out.println(message);25. 26. /接收数据27. BufferedReaderin=newBufferedReader(newInputStreamReader(socket.getInputStream();28. Stringmsg=in.readLine();29. if(null!=msg)30. editText.setText(msg);31. System.out.println(msg);32. 33. else34. editText.setText(dataerror);35. 36. out.close();37. in.close();38. catch(UnknownHostExceptione)39. e.printStackTrace();40. catch(IOExceptione)41. e.printStackTrace();42. 43. finally44. try45. if(null!=socket)46. socket.close();47. 48. catch(IOExceptione)49. e.printStackTrace();50. 51. 52. 53. );54. 55. 布局文件:javaview plaincopy1. 2. 5. 7. 11. 13. 启动服务器:javaview plaincopy1. javaccom/test/socket/Server.java2. javacom.test.socket.Server运行客户端程序:结果如图:注意:服务器与客户端无法链接的可能原因有:没有加访问网络的权限:IP地址要使用:模拟器不能配置代理。2。Apache接口对于大部分应用程序而言JDK本身提供的网络功能已远远不够,这时就需要Android提供的Apache HttpClient了。它是一个开源项目,功能更加完善,为客户端的Http编程提供高效、最新、功能丰富的工具包支持。下面我们以一个简单例子来看看如何使用HttpClient在Android客户端访问Web。首先,要在你的机器上搭建一个web应用myapp,只有很简单的一个http.jsp内容如下:javaview plaincopy1. 2. 3. 4. 5. HttpTest6. 7. 8. 9. %10. Stringtype=request.getParameter(parameter);11. Stringresult=newString(type.getBytes(iso-8859-1),utf-8);12. out.println(+result+);13. %14. 15. 然后实现Android客户端,分别以post、get方式去访问myapp,代码如下:布局文件:javaview plaincopy1. 2. 7. 14. 15. 16. 资源文件:strings.xmljavaview plaincopy1. 2. 3. 通过按钮选择不同方式访问网页4. HttpGet5. 主Activity:javaview plaincopy1. publicclassMainActivityextendsActivity2. privateTextViewtextView;3. privateButtonget,post;4. /*Calledwhentheactivityisfirstcreated.*/5. Override6. publicvoidonCreate(BundlesavedInstanceState)7. super.onCreate(savedInstanceState);8. setContentView(R.layout.main);9. 10. textView=(TextView)findViewById(R.id.textView);11. get=(Button)findViewById(R.id.get);12. post=(Button)findViewById(R.id.post);13. 14. /绑定按钮监听器15. get.setOnClickListener(newOnClickListener()16. Override17. publicvoidonClick(Viewv)18. /注意:此处ip不能用或localhost,Android模拟器已将它自己作为了localhost19. Stringuri=8:8080/myapp/http.jsp?parameter=以Get方式发送请求;20. textView.setText(get(uri);21. 22. );23. /绑定按钮监听器24. post.setOnClickListener(newOnClickListener()25. Override26. publicvoidonClick(Viewv)27. Stringuri=8:8080/myapp/http.jsp;28. textView.setText(post(uri);29. 30. );31. 32. /*33. *以get方式发送请求,访问web34. *paramuriweb地址35. *return响应数据36. */37. privatestaticStringget(Stringuri)38. BufferedReaderreader=null;39. StringBuffersb=null;40. Stringresult=;41. HttpClientclient=newDefaultHttpClient();42. HttpGetrequest=newHttpGet(uri);43. try44. /发送请求,得到响应45. HttpResponseresponse=client.execute(request);46. 47. /请求成功48. if(response.getStatusLine().getStatusCode()=HttpStatus.SC_OK)49. reader=newBufferedReader(newInputStreamReader(response.getEntity().getContent();50. sb=newStringBuffer();51. Stringline=;52. StringNL=System.getProperty(line.separator);53. while(line=reader.readLine()!=null)54. sb.append(line);55. 56. 57. catch(ClientProtocolExceptione)58. e.printStackTrace();59. catch(IOExceptione)60. e.printStackTrace();61. 62. finally63. try64. if(null!=reader)65. reader.close();66. reader=null;67. 68. catch(IOExceptione)69. e.printStackTrace();70. 71. 72. if(null!=sb)73. result=sb.toString();74. 75. returnresult;76. 77. /*78. *以post方式发送请求,访问web79. *paramuriweb地址80. *return响应数据81. */82. privatestaticStringpost(Stringuri)83. BufferedReaderreader=null;84. StringBuffersb=null;85. Stringresult=;86. HttpClientclient=newDefaultHttpClient();87. HttpPostrequest=newHttpPost(uri);88. 89. /保存要传递的参数90. Listparams=newArrayList();91. /添加参数92. params.add(newBasicNameValuePair(parameter,以Post方式发送请求);93. 94. try95. /设置字符集96. HttpEntityentity=newUrlEncodedFormEntity(params,utf-8);97. /请求对象98. request.setEntity(entity);99. /发送请求100. HttpResponseresponse=client.execute(request);101. 102. /请求成功103. if(response.getStatusLine().getStatusCode()=HttpStatus.SC_OK)104. System.out.println(postsuccess);105. reader=newBu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论