Android提交数据到服务器的两种方式四种方法

    博客分类:
  • android
Android 提交数据 HttpClient

Android应用开发中,会经常要提交数据到服务器和从服务器得到数据,本文主要是给出了利用http协议采用HttpClient方式向服务器提交数据的方法。

代码比较简单,这里不去过多的阐述,直接看代码。

Java代码
  1. /**
  2. *@authorDylan
  3. *本类封装了Android中向web服务器提交数据的两种方式四种方法
  4. */
  5. publicclassSubmitDataByHttpClientAndOrdinaryWay{
  6. /**
  7. *使用get请求以普通方式提交数据
  8. *@parammap传递进来的数据,以map的形式进行了封装
  9. *@parampath要求服务器servlet的地址
  10. *@return返回的boolean类型的参数
  11. *@throwsException
  12. */
  13. publicBooleansubmitDataByDoGet(Map<String,String>map,Stringpath)throwsException{
  14. //拼凑出请求地址
  15. StringBuildersb=newStringBuilder(path);
  16. sb.append("?");
  17. for(Map.Entry<String,String>entry:map.entrySet()){
  18. sb.append(entry.getKey()).append("=").append(entry.getValue());
  19. sb.append("&");
  20. }
  21. sb.deleteCharAt(sb.length()-1);
  22. Stringstr=sb.toString();
  23. System.out.println(str);
  24. URLUrl=newURL(str);
  25. HttpURLConnectionHttpConn=(HttpURLConnection)Url.openConnection();
  26. HttpConn.setRequestMethod("GET");
  27. HttpConn.setReadTimeout(5000);
  28. //GET方式的请求不用设置什么DoOutPut()之类的吗?
  29. if(HttpConn.getResponseCode()==HttpURLConnection.HTTP_OK){
  30. returntrue;
  31. }
  32. returnfalse;
  33. }
  34. /**
  35. *普通方式的DoPost请求提交数据
  36. *@parammap传递进来的数据,以map的形式进行了封装
  37. *@parampath要求服务器servlet的地址
  38. *@return返回的boolean类型的参数
  39. *@throwsException
  40. */
  41. publicBooleansubmitDataByDoPost(Map<String,String>map,Stringpath)throwsException{
  42. //注意Post地址中是不带参数的,所以newURL的时候要注意不能加上后面的参数
  43. URLUrl=newURL(path);
  44. //Post方式提交的时候参数和URL是分开提交的,参数形式是这样子的:name=y&age=6
  45. StringBuildersb=newStringBuilder();
  46. //sb.append("?");
  47. for(Map.Entry<String,String>entry:map.entrySet()){
  48. sb.append(entry.getKey()).append("=").append(entry.getValue());
  49. sb.append("&");
  50. }
  51. sb.deleteCharAt(sb.length()-1);
  52. Stringstr=sb.toString();
  53. HttpURLConnectionHttpConn=(HttpURLConnection)Url.openConnection();
  54. HttpConn.setRequestMethod("POST");
  55. HttpConn.setReadTimeout(5000);
  56. HttpConn.setDoOutput(true);
  57. HttpConn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
  58. HttpConn.setRequestProperty("Content-Length",String.valueOf(str.getBytes().length));
  59. OutputStreamos=HttpConn.getOutputStream();
  60. os.write(str.getBytes());
  61. if(HttpConn.getResponseCode()==HttpURLConnection.HTTP_OK){
  62. returntrue;
  63. }
  64. returnfalse;
  65. }
  66. /**
  67. *以HttpClient的DoGet方式向服务器发送请数据
  68. *@parammap传递进来的数据,以map的形式进行了封装
  69. *@parampath要求服务器servlet的地址
  70. *@return返回的boolean类型的参数
  71. *@throwsException
  72. */
  73. publicBooleansubmitDataByHttpClientDoGet(Map<String,String>map,Stringpath)throwsException{
  74. HttpClienthc=newDefaultHttpClient();
  75. //请求路径
  76. StringBuildersb=newStringBuilder(path);
  77. sb.append("?");
  78. for(Map.Entry<String,String>entry:map.entrySet()){
  79. sb.append(entry.getKey()).append("=").append(entry.getValue());
  80. sb.append("&");
  81. }
  82. sb.deleteCharAt(sb.length()-1);
  83. Stringstr=sb.toString();
  84. System.out.println(str);
  85. HttpGetrequest=newHttpGet(sb.toString());
  86. HttpResponseresponse=hc.execute(request);
  87. if(response.getStatusLine().getStatusCode()==HttpURLConnection.HTTP_OK){
  88. returntrue;
  89. }
  90. returnfalse;
  91. }
  92. /**
  93. *以HttpClient的DoPost方式提交数据到服务器
  94. *@parammap传递进来的数据,以map的形式进行了封装
  95. *@parampath要求服务器servlet的地址
  96. *@return返回的boolean类型的参数
  97. *@throwsException
  98. */
  99. publicBooleansubmintDataByHttpClientDoPost(Map<String,String>map,Stringpath)throwsException{
  100. //1.获得一个相当于浏览器对象HttpClient,使用这个接口的实现类来创建对象,DefaultHttpClient
  101. HttpClienthc=newDefaultHttpClient();
  102. //DoPost方式请求的时候设置请求,关键是路径
  103. HttpPostrequest=newHttpPost(path);
  104. //2.为请求设置请求参数,也即是将要上传到web服务器上的参数
  105. List<NameValuePair>parameters=newArrayList<NameValuePair>();
  106. for(Map.Entry<String,String>entry:map.entrySet()){
  107. NameValuePairnameValuePairs=newBasicNameValuePair(entry.getKey(),entry.getValue());
  108. parameters.add(nameValuePairs);
  109. }
  110. //请求实体HttpEntity也是一个接口,我们用它的实现类UrlEncodedFormEntity来创建对象,注意后面一个String类型的参数是用来指定编码的
  111. HttpEntityentity=newUrlEncodedFormEntity(parameters,"UTF-8");
  112. request.setEntity(entity);
  113. //3.执行请求
  114. HttpResponseresponse=hc.execute(request);
  115. //4.通过返回码来判断请求成功与否
  116. if(response.getStatusLine().getStatusCode()==HttpURLConnection.HTTP_OK){
  117. returntrue;
  118. }
  119. returnfalse;
  120. }
  121. }

更多相关文章

  1. Android高频面试专题 - 基础篇(一)Activity
  2. android通过服务实现消息推送
  3. Android常用功能实例
  4. Android-webview和js脚本语言交互的时候怎么获取js方法的返回值
  5. Android(安卓)Canvas绘图抗锯齿解决方法
  6. Android中MVC框架的运用
  7. Android(安卓)PreferenceActivity 学习笔记
  8. Android(安卓)内存修改
  9. Android(安卓)ContentProvider和Uri详解

随机推荐

  1. java网络编程(2)socket通信案例
  2. java运行时数据区域
  3. java集合系列(6)Vector
  4. synchronized的实现原理和应用
  5. java集合系列(3)ArrayList
  6. 设计模式之装饰模式
  7. 学习资源大汇总
  8. 设计模式之享元模式
  9. jvm系列(5)性能监控工具
  10. java集合系列(4)fail-fast机制(面试常问)