之前介绍了使用Http的get和post 方式进行网络通信,本文介绍使用HttpClient的HttpGet以及进行网络通信。
首先要确保当前项目已经包含了Apache的支持库
下载链接:http://hc.apache.org/downloads.cgi
如果没有包含该库文件,首先将将上面下载下来的文件中的lib中的.jar包全部拷贝到项目的libs下面,在Android Studio中工程目录下选中进行addaslibrary.

HttpGet通信
上面的步骤完成后可以来使用,先新建一个HttpClient:

HttpClient client=new DefaultHttpClient();

新建一个HttpGet,参数是一个url字符串:

HttpGet httpGet=new HttpGet("http://fanyi.youdao.com/openapi.do?keyfrom=SkyHttpGetTest&key=545323935&type=data&doctype=json&version=1.1&q=hello");

通过httpClient.execute(httpGet),发送Get请求,参数是HttpUriRequest,而HttpGet和HttpPost都继承于它,所以下一篇的HttpPost发送请求用的是同样的方式,该方法返回一个HttpResponse;

HttpResponse responnse=client.execute(httpGet);

之前在用http的get和post方式通信时,都是获得HttpURLConnection的输入流来读取数据的,即connection.getInputStream(),使用HttpClient获取返回数据的方式为先获得一个返回的HttpResponse对象并取得数据实体,再读取数据实体的内容:getContent()返回的是一个输入流InputStream:

HttpEntity entity=response.getEntity();InputStream in=entity.getContent();//接下来用IO操作进行数据的读取  .  .  .

HttpPost通信

如前面HttpGet方式一样,新建HttpClient

新建HttpPost:

HttpPost httpPost=new HttpPost("http://fanyi.youdao.com/openapi.do");

注意到和之前HttpGet方式的不同了吗,前面的HttpGet将要提交的表单数据直接放在了Url的后面,而HttpPost是不直接写在后面的。

既然表单数据不放在URL后面,我们的设置HttpPost的表单内容,这里不能像之前http的Post方式一样获得一个OutputStream写入数据,而是设置一个HttpEntity实体

//构建一个ArrayList,类型为BasicNameValuePair(键值对),里面存放的是表单数据 list.add(new BasicNameValuePair("keyfrom","SkyHttpGetTest"));                            list.add(new BasicNameValuePair("key","545323935"));                            list.add(new BasicNameValuePair("type","data"));                            list.add(new BasicNameValuePair("doctype",params[0]));                            list.add(new BasicNameValuePair("version","1.1"));                            list.add(new BasicNameValuePair("q",params[1])); httpPost.setEntity(new UrlEncodedFormEntity(list));

接下里就和HttpGetHttpClient执行:

HttpResponse response=client.execute(httpPost);HttpEntity entity=response.getEntity();InputStream in=entity.getCotent();//...数据读取操作

更多相关文章

  1. GitHub 标星 2.5K+!教你通过玩游戏的方式学习 VIM!
  2. “罗永浩抖音首秀”销售数据的可视化大屏是怎么做出来的呢?
  3. Nginx系列教程(三)| 一文带你读懂Nginx的负载均衡
  4. 不吹不黑!GitHub 上帮助人们学习编码的 12 个资源,错过血亏...
  5. android studio 错误:“java.io.EOFException”
  6. [置顶] android 跨进程通信
  7. Android中Intent传递自定义对象类型的数据
  8. android launcher之检测应用程序图标在桌面是否存在
  9. Android(安卓)-- IPC通信机制之一Binder简介

随机推荐

  1. 高级控件之网格视图(GridView)
  2. android studio 4.0. gradle 4.0. tinker
  3. Android(安卓)- ToDoList(fragment) 详解
  4. Android中的ellipsize
  5. Android利用系统广播---监听应用程序安装
  6. Android 中的数据库 SQLite
  7. Android(安卓)+NDK+eclipse+opengl ES2.0
  8. Android(安卓)Studio 上如何使用LogCat
  9. Android(安卓)删除sdcard目录中的某些目
  10. unity3d连接Sqlite并打包发布Android