Android——使用HttpClient的HttpGet和Post方式进行网络通信
之前介绍了使用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();//...数据读取操作
更多相关文章
- GitHub 标星 2.5K+!教你通过玩游戏的方式学习 VIM!
- “罗永浩抖音首秀”销售数据的可视化大屏是怎么做出来的呢?
- Nginx系列教程(三)| 一文带你读懂Nginx的负载均衡
- 不吹不黑!GitHub 上帮助人们学习编码的 12 个资源,错过血亏...
- android studio 错误:“java.io.EOFException”
- [置顶] android 跨进程通信
- Android中Intent传递自定义对象类型的数据
- android launcher之检测应用程序图标在桌面是否存在
- Android(安卓)-- IPC通信机制之一Binder简介