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

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

/** * @author Dylan * 本类封装了Android中向web服务器提交数据的两种方式四种方法 */public class SubmitDataByHttpClientAndOrdinaryWay { /** * 使用get请求以普通方式提交数据 * @param map 传递进来的数据,以map的形式进行了封装 * @param path 要求服务器servlet的地址 * @return 返回的boolean类型的参数 * @throws Exception */ public Boolean submitDataByDoGet(Map map, String path) throws Exception { // 拼凑出请求地址 StringBuilder sb = new StringBuilder(path); sb.append("?"); for (Map.Entry entry : map.entrySet()) {  sb.append(entry.getKey()).append("=").append(entry.getValue());  sb.append("&"); } sb.deleteCharAt(sb.length() - 1); String str = sb.toString(); System.out.println(str); URL Url = new URL(str); HttpURLConnection HttpConn = (HttpURLConnection) Url.openConnection(); HttpConn.setRequestMethod("GET"); HttpConn.setReadTimeout(5000); // GET方式的请求不用设置什么DoOutPut()之类的吗? if (HttpConn.getResponseCode() == HttpURLConnection.HTTP_OK) {  return true; } return false; } /** * 普通方式的DoPost请求提交数据 * @param map 传递进来的数据,以map的形式进行了封装 * @param path 要求服务器servlet的地址 * @return 返回的boolean类型的参数 * @throws Exception */ public Boolean submitDataByDoPost(Map map, String path) throws Exception { // 注意Post地址中是不带参数的,所以newURL的时候要注意不能加上后面的参数 URL Url = new URL(path); // Post方式提交的时候参数和URL是分开提交的,参数形式是这样子的:name=y&age=6 StringBuilder sb = new StringBuilder(); // sb.append("?"); for (Map.Entry entry : map.entrySet()) {  sb.append(entry.getKey()).append("=").append(entry.getValue());  sb.append("&"); } sb.deleteCharAt(sb.length() - 1); String str = sb.toString(); HttpURLConnection HttpConn = (HttpURLConnection) Url.openConnection(); HttpConn.setRequestMethod("POST"); HttpConn.setReadTimeout(5000); HttpConn.setDoOutput(true); HttpConn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); HttpConn.setRequestProperty("Content-Length", String.valueOf(str.getBytes().length)); OutputStream os = HttpConn.getOutputStream(); os.write(str.getBytes()); if (HttpConn.getResponseCode() == HttpURLConnection.HTTP_OK) {  return true; } return false; } /** * 以HttpClient的DoGet方式向服务器发送请数据 * @param map 传递进来的数据,以map的形式进行了封装 * @param path 要求服务器servlet的地址 * @return 返回的boolean类型的参数 * @throws Exception */ public Boolean submitDataByHttpClientDoGet(Map map, String path) throws Exception { HttpClient hc = new DefaultHttpClient(); // 请求路径 StringBuilder sb = new StringBuilder(path); sb.append("?"); for (Map.Entry entry : map.entrySet()) {  sb.append(entry.getKey()).append("=").append(entry.getValue());  sb.append("&"); } sb.deleteCharAt(sb.length() - 1); String str = sb.toString(); System.out.println(str); HttpGet request = new HttpGet(sb.toString()); HttpResponse response = hc.execute(request); if (response.getStatusLine().getStatusCode() == HttpURLConnection.HTTP_OK) {  return true; } return false; }  /** * 以HttpClient的DoPost方式提交数据到服务器 * @param map 传递进来的数据,以map的形式进行了封装 * @param path 要求服务器servlet的地址 * @return 返回的boolean类型的参数 * @throws Exception */ public Boolean submintDataByHttpClientDoPost(Map map, String path) throws Exception { // 1. 获得一个相当于浏览器对象HttpClient,使用这个接口的实现类来创建对象,DefaultHttpClient HttpClient hc = new DefaultHttpClient(); // DoPost方式请求的时候设置请求,关键是路径 HttpPost request = new HttpPost(path); // 2. 为请求设置请求参数,也即是将要上传到web服务器上的参数 List parameters = new ArrayList(); for (Map.Entry entry : map.entrySet()) {  NameValuePair nameValuePairs = new BasicNameValuePair(entry.getKey(), entry.getValue());  parameters.add(nameValuePairs); } // 请求实体HttpEntity也是一个接口,我们用它的实现类UrlEncodedFormEntity来创建对象,注意后面一个String类型的参数是用来指定编码的 HttpEntity entity = new UrlEncodedFormEntity(parameters, "UTF-8"); request.setEntity(entity); // 3. 执行请求 HttpResponse response = hc.execute(request); // 4. 通过返回码来判断请求成功与否 if (response.getStatusLine().getStatusCode() == HttpURLConnection.HTTP_OK) {  return true; } return false; }}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

更多相关文章

  1. SpringBoot 2.0 中 HikariCP 数据库连接池原理解析
  2. 一句话锁定MySQL数据占用元凶
  3. Facebook 客户端优化实践后,App 启动提速65%
  4. Android(安卓)数据存储之SQLite
  5. Android客户端和服务器端数据交互的第二种方法
  6. [Android实例] Android(安卓)DB数据库实例
  7. Android-SQLite使用总结
  8. 【干货】Android应用架构笔记
  9. HttpURLConnection 源码分析

随机推荐

  1. React-Native测试报告
  2. AsyncTask的使用详解
  3. android:gravity与android:layout_gravit
  4. android UI 配置参数
  5. 初学Android学到的关于LinearLayout的知
  6. [转]Jollen 的 Android 教學,#11: AndroidM
  7. 【Android】让Python在Android系统上飞一
  8. android四大组件学习总结
  9. Pro Android 4 第五章 理解Intent
  10. Android 常用UI控件的一些属性设置(在.xm