Android——使用HttpClient的HttpGet和Post方式进行网络通信

27 篇文章 0 订阅

之前介绍了使用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();
//...数据读取操作
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值