文档章节

HTTP通信

菜鸟上路中
 菜鸟上路中
发布于 2016/04/18 19:14
字数 585
阅读 8
收藏 0

无论是使用HttpGet,还是使用HttpPost,都必须通过如下3步来访问HTTP资源。


   1.创建HttpGet或HttpPost对象,将要请求的URL通过构造方法传入HttpGet或HttpPost对象。


   2.使用DefaultHttpClient类的execute方法发送HTTP GET或HTTP POST请求,并返回HttpResponse对象。


   3.通过HttpResponse接口的getEntity方法返回响应信息,并进行相应的处理。


   如果使用HttpPost方法提交HTTP POST请求,则需要使用HttpPost类的setEntity方法设置请求参数。参数则必须用NameValuePair[]数组存储。


HttpGet


public String doGet(){

    String uriAPI = "http://XXXXX?str=I+am+get+String";

    String result= "";

//    HttpGet httpRequst = new HttpGet(URI uri);

//    HttpGet httpRequst = new HttpGet(String uri);

//    创建HttpGet或HttpPost对象,将要请求的URL通过构造方法传入HttpGet或HttpPost对象。

    HttpGet httpRequst = new HttpGet(uriAPI);

//    new DefaultHttpClient().execute(HttpUriRequst requst);

    try {

//使用DefaultHttpClient类的execute方法发送HTTP GET请求,并返回HttpResponse对象。

HttpResponse httpResponse = new DefaultHttpClient().execute(httpRequst);//其中HttpGet是HttpUriRequst的子类

    if(httpResponse.getStatusLine().getStatusCode() == 200)

    {

    HttpEntity httpEntity = httpResponse.getEntity();

    result = EntityUtils.toString(httpEntity);//取出应答字符串

    // 一般来说都要删除多余的字符 

    result.replaceAll("\r", "");//去掉返回结果中的"\r"字符,否则会在结果字符串后面显示一个小方格  

    }else {

  httpRequst.abort();

   } catch (ClientProtocolException e) {

// TODO Auto-generated catch block

e.printStackTrace();

result = e.getMessage().toString();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

result = e.getMessage().toString();

}

return result;

}



 HttpPost


    如果使用HttpPost方法提交HTTP POST请求,则需要使用HttpPost类的setEntity方法设置请求参数。参数则必须用NameValuePair[]数组存储。

public String doPost() {

    String uriAPI = "http://XXXXXX";//Post方式没有参数在这里

    String result = "";

    HttpPost httpRequst = new HttpPost(uriAPI);//创建HttpPost对象

     

    List <NameValuePair> params = new ArrayList<NameValuePair>();

    params.add(new BasicNameValuePair("str", "I am Post String")); 

    try {

httpRequst.setEntity(new UrlEncodedFormEntity(params,HTTP.UTF_8));

HttpResponse httpResponse = new DefaultHttpClient().execute(httpRequst);

    if(httpResponse.getStatusLine().getStatusCode() == 200){

HttpEntity httpEntity = httpResponse.getEntity();

result = EntityUtils.toString(httpEntity);//取出应答字符串

    }

    } catch (UnsupportedEncodingException e) {

// TODO Auto-generated catch block

e.printStackTrace();

result = e.getMessage().toString();

}

catch (ClientProtocolException e) {

// TODO Auto-generated catch block

e.printStackTrace();

result = e.getMessage().toString();

}

catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

result = e.getMessage().toString();

}

return result;

    }


以发送连接请求时,需要设置链接超时和请求超时等参数,否则会长期停止或者崩溃。

HttpParams httpParameters = new BasicHttpParams();

HttpConnectionParams.setConnectionTimeout(httpParameters, 10*1000);//设置请求超时10秒

HttpConnectionParams.setSoTimeout(httpParameters, 10*1000); //设置等待数据超时10秒

HttpConnectionParams.setSocketBufferSize(params, 8192);

HttpClient httpclient = new DefaultHttpClient(httpParameters); //此时构造DefaultHttpClient时将参数传入

由于是联网,在AndroidManifest.xml中添加网络连接的权限

<uses-permission android:name="android.permission.INTERNET"/>




© 著作权归作者所有

共有 人打赏支持
上一篇: http请求
下一篇: 爬虫
菜鸟上路中
粉丝 1
博文 14
码字总数 7161
作品 0
浦东
私信 提问
UNIX网络编程卷2进程间通信读书笔记汇总

UNIX网络编程卷2进程间通信读书笔记(一)—概述 http://blog.chinaunix.net/u/22935/article_52711_2.html UNIX网络编程卷2进程间通信读书笔记(二)—管道 (1) http://blog.chinaunix.ne...

长平狐
2012/09/03
211
0
安卓应用安全指南 5.4.1 通过 HTTPS 的通信 示例代码

5.4.1 通过 HTTPS 的通信 示例代码 原书:Android Application Secure Design/Secure Coding Guidebook 译者:飞龙 协议:CC BY-NC-SA 4.0 你可以通过下面的图表(图 5.4-1)找出你应该实现的...

apachecn_飞龙
04/01
0
0
android网络通信之socket教程实例汇总

一、socket基础 1、Socket通讯机制(详细),如何将socket通信的客户端与服务器 http://www.eoeandroid.com/thread-61727-1-1.html 2、Http和Socket区别 http://www.eoeandroid.com/thread-9...

程序袁_绪龙
2014/12/11
0
0
TCP/IP协议整理

TCP/IP协议 TCP用于应用程序之间的通信 APP1<------TCP(双开工的通信)----->APP2 IP用于计算机之间的通信 IP是无连接的通信协议 TCP/IP 意味着 TCP 和 IP 在一起协同工作。 TCP负责应用软件...

cs_sharp
2016/02/23
35
0
讲真,理解 HTTPS 这一篇就够了

前言 本文将逐步的来还原 HTTPS 的设计过程,理解从 HTTP 到 HTTPS 的转变中,到底都发生了些什么。 HTTP 的缺陷 首先先来说说为什么需要 HTTPS, 也就是 HTTP 的主要不足是什么 通信使用明文...

骑摩托马斯
2017/12/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring源码学习笔记-1-Resource

打算补下基础,学习下Spring源码,参考书籍是《Spring源码深度解析》,使用版本是Spring 3.2.x,本来想试图用脑图记录的,发现代码部分不好贴,还是作罢,这里只大略记录下想法,不写太细了 ...

zypy333
今天
10
0
RestClientUtil和ConfigRestClientUtil区别说明

RestClientUtil directly executes the DSL defined in the code. ConfigRestClientUtil gets the DSL defined in the configuration file by the DSL name and executes it. RestClientUtil......

bboss
今天
16
0

中国龙-扬科
昨天
2
0
Linux系统设置全局的默认网络代理

更改全局配置文件/etc/profile all_proxy="all_proxy=socks://rahowviahva.ml:80/"ftp_proxy="ftp_proxy=http://rahowviahva.ml:80/"http_proxy="http_proxy=http://rahowviahva.ml:80/"......

临江仙卜算子
昨天
10
0
java框架学习日志-6(bean作用域和自动装配)

本章补充bean的作用域和自动装配 bean作用域 之前提到可以用scope来设置单例模式 <bean id="type" class="cn.dota2.tpye.Type" scope="singleton"></bean> 除此之外还有几种用法 singleton:......

白话
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部