文档章节

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"/>




© 著作权归作者所有

共有 人打赏支持
菜鸟上路中
粉丝 1
博文 14
码字总数 7161
作品 0
浦东
UNIX网络编程卷2进程间通信读书笔记汇总

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

长平狐
2012/09/03
185
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
安卓应用安全指南 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
讲真,理解 HTTPS 这一篇就够了

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

骑摩托马斯
2017/12/12
0
0
TCP/IP协议整理

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

cs_sharp
2016/02/23
35
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

day58-20180816-流利阅读笔记-待学习

苹果市值破万亿,iPhone 会涨价吗? Lala 2018-08-16 1.今日导读 苹果教父乔布斯曾经说过:“活着就是为了改变世界。”虽然他在 56 岁时就遗憾离世,但他极具创新和变革的精神早已深埋进苹果...

aibinxiao
31分钟前
4
0
[雪峰磁针石博客]python3快速入门教程1 turtle绘图-2函数

菲波那契序列: >>> # Fibonacci series:... # the sum of two elements defines the next... a, b = 0, 1>>> while b < 10:... print(b)... a, b = b, a+b...112......

python测试开发人工智能安全
今天
0
0
java环境变量配置最正确的方式

原贴:https://blog.csdn.net/qq_40007997/article/details/79784711,十分详细,亲测有效

kitty1116
今天
0
0
49.Nginx防盗链 访问控制 解析php相关 代理服务器

12.13 Nginx防盗链 12.14 Nginx访问控制 12.15 Nginx解析php相关配置(502的问题) 12.16 Nginx代理 扩展 502问题汇总 http://ask.apelearn.com/question/9109 location优先级 http://blog....

王鑫linux
今天
2
0
Nginx防盗链、访问控制、解析php相关配置、Nginx代理

一、Nginx防盗链 1. 编辑虚拟主机配置文件 vim /usr/local/nginx/conf/vhost/test.com.conf 2. 在配置文件中添加如下的内容 { expires 7d; valid_referers none blocked server_names *.tes......

芬野de博客
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部