目前Android 与服务器交互有两种方式:1.Socket 2. Http ;

但由于Http的封装性以及性能比socket要好,所以推荐使用http方式和服务器交互;

通过http访问服务器有三种方法:1.post  2. get  3.或者上传文件

例子如下:

  1. protected JSONObject toWebService(String url, String method,
  2. List<NameValuePair> params) {
  3. try {
  4. Log.w("HealthCareAPI", "toWebService: url = " + url);
  5. HttpUriRequest request = null;
  6. if (HealthCareApi.GET_METHOD.equalsIgnoreCase(method)) {  //Get方法
  7. url = url + "?" + URLEncodedUtils.format(params, "UTF-8");
  8. Log.w("HealthCareApiCore", url);
  9. request = new HttpGet(url);
  10. } else if (HealthCareApi.POST_METHOD.equalsIgnoreCase(method)) {  //Post方法
  11. HttpPost postRequest = new HttpPost(url);
  12. UrlEncodedFormEntity entity = new UrlEncodedFormEntity(
  13. params, HTTP.UTF_8);
  14. postRequest.setHeader("Content-Type",
  15. "application/x-www-form-urlencoded; charset=utf-8");
  16. postRequest.setEntity(entity);
  17. request = postRequest;
  18. } else if (HealthCareApi.POST_METHOD_WITH_BIN
  19. .equalsIgnoreCase(method)) {   //上传文件,这里指的是上传图片文件
  20. HttpPost postRequest = new HttpPost(url);
  21. MultipartEntity multipartContent = new MultipartEntity();
  22. for (NameValuePair nameValuePair : params) {
  23. if (nameValuePair.getName().equals("photo")
  24. || nameValuePair.getName().equals("pic")
  25. || nameValuePair.getName().equals("photo_url")) {
  26. File photoFile = new File(nameValuePair.getValue());
  27. if (photoFile.exists()) {
  28. String extensionName = HealthCareApi
  29. .getExtensionName(photoFile.getName());
  30. FileBody fileBody = new FileBody(photoFile,
  31. MimeTypeMap.getSingleton()
  32. .getMimeTypeFromExtension(
  33. new String(extensionName).toLowerCase()));
  34. multipartContent.addPart(
  35. nameValuePair.getName(), fileBody);
  36. }
  37. } else {
  38. multipartContent.addPart(nameValuePair.getName(),
  39. new StringBody(nameValuePair.getValue(),
  40. Charset.forName("UTF-8")));
  41. }
  42. }
  43. postRequest.setEntity(multipartContent);
  44. request = postRequest;
  45. }
  46. HttpParams httpParams = new BasicHttpParams();
  47. HttpConnectionParams
  48. .setConnectionTimeout(httpParams, 20 * 1000);
  49. HttpConnectionParams.setSoTimeout(httpParams, 20 * 1000);
  50. HttpResponse httpResponse = new DefaultHttpClient(httpParams)
  51. .execute(request);
  52. HttpEntity entity = httpResponse.getEntity();
  53. String res = EntityUtils.toString(entity, "UTF-8");
  54. Log.w("HealtCareApi", "res: " + res);
  55. JSONObject object = new JSONObject(res);
  56. return object;
  57. } catch (Exception e) {
  58. e.printStackTrace();
  59. mException = e;
  60. }
  61. return null;
  62. }

最新文章

  1. CENTOS 6.5 配置YUM安装NGINX
  2. [HTML5] Blob对象
  3. chaper3_exerise_Uva1568_Molar_Mass_分子量
  4. 7.5 [bx+idata] 书中错误
  5. jar包双击执行程序
  6. DataGridView的自定义列排序
  7. 求出数组前面k个元素或数组中元素大于一半的元素(快速排序与堆排序的灵活运用)
  8. nm命令详解
  9. error signing assembly unknown error
  10. 基础命名空间:序列化_自定义序列化 System.Runtime.Serialization
  11. 如何在分布式环境中同步solr索引库和缓存信息
  12. iOS 之 UITextField
  13. C++ 基本数据类型,常量,变量
  14. JavaScript代理模式
  15. phpredis中文开发文档
  16. 《Opencv 3 计算机视觉 python语言实现》&#183; 第二遍 —— 读后笔记
  17. 状压dp的另一种形式
  18. 使用lombok 找不到方法
  19. 使用mysql乐观锁解决并发问题思路
  20. ISCC2018(web)

热门文章

  1. .net core demo &amp; docker images
  2. iOS进阶——可取消的block
  3. 如何管好.net的内存(托管堆和垃圾回收)
  4. sed- 文本流编辑器
  5. Hadoop fs命令详解
  6. 【原】在一般处理程序中设置session
  7. bootstrap响应式网页设计的9条基本原则!
  8. ASP.NET文件上传
  9. Wpf 简单制作自己的窗体样式(2)
  10. c#教程之事件处理函数的参数