目前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. }

Android 通过http访问服务器的更多相关文章

  1. Django REST Framework学习——Android使用REST方法访问Diango

    本文更应该叫做Android如何模拟浏览器访问Django服务器后台. 环境为: Android通过HttpClient访问服务器,从Django中获取json数据,解析显示在UI界面上. 问题为: ...

  2. Android使用动态代理搭建网络模块框架

    1.Java中的动态代理相信大多数朋友都接触过,在此就不再赘述,如果有不明白的朋友,可以到网上搜一下(一搜一大堆,呵呵..) 2.本节主要阐述一下如何使用动态代理框架实现Android应用的瘦身开发. ...

  3. 转:RTC搭建android下三层应用程序访问服务器MsSql-客户端

    原文:http://www.cnblogs.com/delphi007/p/3346084.html android下stringgrid已知问题: 通过点击时获取对应行的值有问题,在win下调试正常 ...

  4. 转:RTC搭建android下三层应用程序访问服务器MsSql-服务器端

    原文:http://www.cnblogs.com/delphi007/p/3346061.html 前几天通过Ro搭建webservice,然后在android下调用,虽然已近成功,但是返回的数据库 ...

  5. RTC搭建android下三层应用程序访问服务器MsSql-客户端

    android下stringgrid已知问题: 通过点击时获取对应行的值有问题,在win下调试正常,在android下出现定位不准 二.客户端开发 1,新建工程 2,添加相关客户端控件TRtcHttp ...

  6. RTC搭建android下三层应用程序访问服务器MsSql-服务器端

    前几天通过Ro搭建webservice,然后在android下调用,虽然已近成功,但是返回的数据库里的中文有乱码一直未得到解决!rtc6.23版本,已经支持xe5,也支持fmx的android下开发, ...

  7. Android访问服务器(TOMCAT)乱码引发的问题

    1.浏览器往服务器发送的请求主要可分为2种:get.post:delete.head等不赘述. GET方式: 从浏览器上直接敲地址,最大特点就是参数直接跟在地址后面. POST方式:表单提交等. 2. ...

  8. Android端访问服务器核心代码

  9. Android JSON、GSON、FastJson的封装与解析

    声明: 1.本帖只提供代码,不深入讲解原理.如果读者想要深入了解,那就不要在这个帖子上浪费时间了 2.客户端用的是Google官方的Volley访问服务器,具体了解Volley请戳 这里 3.本帖三种 ...

随机推荐

  1. (转)Ubuntu 12.04 LTS 构建高可用分布式 MySQL 集群

    本文的英文版本链接是 http://www.mrxuri.com/index.php/2013/11/20/install-mysql-cluster-on-ubuntu-12-04-lts.html ...

  2. vim 跳转命令

    基本跳转: hjkl:左下上右 HML:当前屏幕顶.中.底部 web:下一单词词首.下一单词词尾.前一单词词首 gg:文件首  G:文件末尾  ngg/nG:第n行 ta:移动到所在行之后第一个字符a ...

  3. Emit

    http://www.cnblogs.com/zhuweisky/archive/2008/09/20/1294666.html http://www.cnblogs.com/xiaoxiangfei ...

  4. Ueditor设置默认字体

    其实很简单,只需要将ueditor.all.js 以及 ueditor.all.min.js 两个文件中的字体改掉即可 修改方法: 在ueditor.all.js中搜索:设置默认字体和字号: 在ued ...

  5. 使用FTP删不掉文件的解决方法

    今天在清理自己的服务器的时候发现曾经上传了一些png文件,中文命名的,权限是718,如果权限为777就可以删掉但是很奇怪的是执行权限修改也不行,改不掉: 最后的解决方法就是使用windows 随便打开 ...

  6. 《APUE》第6章练习1

    问题:编写一个程序,它调用uname并输出utsname结构中的所有字段,并将输出与uname(1)命令的输出结构做比较. 我本来以为utsname结构也跟passwd结构一样,也有那三个函数来获取整 ...

  7. PHP文件操作

    1.递归获取目录下文件的个数 function getFileCount($dir){ if(!is_dir($dir)) return false; //打开目录 $handle = opendir ...

  8. gulp 不是内部或者外部命令 或者 webpack 不是内部或者外部命令

    gulp安装也正常,但是就是查看gulp -v的时候报错,原因:缺少系统变量PATH或者PATH变量错误 提示:这个系统变量PATH,直接追加就好(多个变量值用分号;隔开),不要删除已经有的系统变量P ...

  9. PhpExcel数组输出到Excel浏览器下载

    经常是mysql查出二维数组,并且数组的带key也是有意义的,考虑到经常用,就打算弄个函数出来,方便以后用! 相对是规范的数组哈,具体可看下$data数组: 生成的excel第一行是对应的key: 直 ...

  10. cadence 焊盘制作小结

    因为以前一直用altium designer 话PCB,做封装的时候焊盘是不用自己操心的,但是开始用cadence以后发现好多以前不太懂的东西,需要自己画焊盘,这就导致需要了解好多自己以前不懂的东西, ...