Android 通过http访问服务器
2024-08-25 07:22:17
目前Android 与服务器交互有两种方式:1.Socket 2. Http ;
但由于Http的封装性以及性能比socket要好,所以推荐使用http方式和服务器交互;
通过http访问服务器有三种方法:1.post 2. get 3.或者上传文件
例子如下:
- protected JSONObject toWebService(String url, String method,
- List<NameValuePair> params) {
- try {
- Log.w("HealthCareAPI", "toWebService: url = " + url);
- HttpUriRequest request = null;
- if (HealthCareApi.GET_METHOD.equalsIgnoreCase(method)) { //Get方法
- url = url + "?" + URLEncodedUtils.format(params, "UTF-8");
- Log.w("HealthCareApiCore", url);
- request = new HttpGet(url);
- } else if (HealthCareApi.POST_METHOD.equalsIgnoreCase(method)) { //Post方法
- HttpPost postRequest = new HttpPost(url);
- UrlEncodedFormEntity entity = new UrlEncodedFormEntity(
- params, HTTP.UTF_8);
- postRequest.setHeader("Content-Type",
- "application/x-www-form-urlencoded; charset=utf-8");
- postRequest.setEntity(entity);
- request = postRequest;
- } else if (HealthCareApi.POST_METHOD_WITH_BIN
- .equalsIgnoreCase(method)) { //上传文件,这里指的是上传图片文件
- HttpPost postRequest = new HttpPost(url);
- MultipartEntity multipartContent = new MultipartEntity();
- for (NameValuePair nameValuePair : params) {
- if (nameValuePair.getName().equals("photo")
- || nameValuePair.getName().equals("pic")
- || nameValuePair.getName().equals("photo_url")) {
- File photoFile = new File(nameValuePair.getValue());
- if (photoFile.exists()) {
- String extensionName = HealthCareApi
- .getExtensionName(photoFile.getName());
- FileBody fileBody = new FileBody(photoFile,
- MimeTypeMap.getSingleton()
- .getMimeTypeFromExtension(
- new String(extensionName).toLowerCase()));
- multipartContent.addPart(
- nameValuePair.getName(), fileBody);
- }
- } else {
- multipartContent.addPart(nameValuePair.getName(),
- new StringBody(nameValuePair.getValue(),
- Charset.forName("UTF-8")));
- }
- }
- postRequest.setEntity(multipartContent);
- request = postRequest;
- }
- HttpParams httpParams = new BasicHttpParams();
- HttpConnectionParams
- .setConnectionTimeout(httpParams, 20 * 1000);
- HttpConnectionParams.setSoTimeout(httpParams, 20 * 1000);
- HttpResponse httpResponse = new DefaultHttpClient(httpParams)
- .execute(request);
- HttpEntity entity = httpResponse.getEntity();
- String res = EntityUtils.toString(entity, "UTF-8");
- Log.w("HealtCareApi", "res: " + res);
- JSONObject object = new JSONObject(res);
- return object;
- } catch (Exception e) {
- e.printStackTrace();
- mException = e;
- }
- return null;
- }
最新文章
- CENTOS 6.5 配置YUM安装NGINX
- [HTML5] Blob对象
- chaper3_exerise_Uva1568_Molar_Mass_分子量
- 7.5 [bx+idata] 书中错误
- jar包双击执行程序
- DataGridView的自定义列排序
- 求出数组前面k个元素或数组中元素大于一半的元素(快速排序与堆排序的灵活运用)
- nm命令详解
- error signing assembly unknown error
- 基础命名空间:序列化_自定义序列化 System.Runtime.Serialization
- 如何在分布式环境中同步solr索引库和缓存信息
- iOS 之 UITextField
- C++ 基本数据类型,常量,变量
- JavaScript代理模式
- phpredis中文开发文档
- 《Opencv 3 计算机视觉 python语言实现》&#183; 第二遍 —— 读后笔记
- 状压dp的另一种形式
- 使用lombok 找不到方法
- 使用mysql乐观锁解决并发问题思路
- ISCC2018(web)