文档章节

HTTP通信

菜鸟上路中
 菜鸟上路中
发布于 2016/04/18 19:14
字数 585
阅读 8
收藏 0
点赞 1
评论 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 ⋅ 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

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

聊聊HTTPS协议那些事儿

说起HTTPS,就不得不先说HTTP。HTTP(HyperText Transfer Protocol,超文本传输协议)是TCP/IP协议簇中应用层的一种协议。通常我们把TCP/IP协议簇分为四层,应用层,传输层,网络层,链路层。...

凝望向北 ⋅ 2017/03/23 ⋅ 0

TCP/IP协议整理

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

cs_sharp ⋅ 2016/02/23 ⋅ 0

讲真,理解 HTTPS 这一篇就够了

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

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

HP-Socket v4.1.2,高性能 TCP & HTTP 通信框架

HP-Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件、客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP/HTTP 通信系统,提供 C/C++、C#、Delphi、E(易语言...

伤神小怪兽 ⋅ 2016/12/28 ⋅ 35

HP-Socket v4.3.1,高性能 TCP & HTTP 通信框架

  HP-Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件、客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP/HTTP 通信系统,提供 C/C++、C#、Delphi、E(易...

伤神小怪兽 ⋅ 2017/07/17 ⋅ 10

HP-Socket v4.2.1,高性能 TCP & HTTP 通信框架

HP-Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件、客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP/HTTP 通信系统,提供 C/C++、C#、Delphi、E(易语言...

伤神小怪兽 ⋅ 2017/04/21 ⋅ 22

在Tomcat环境下使用socket通信

最近在做一个APP的服务器端,但是APP和服务器端使用的是HTTP的通信协议,而另一方与服务器端通信却使用的是自定义的通信协议。具体的系统拓扑如下: 为了完成以上的需求,一般的解决方案有两...

zhangwenwen ⋅ 2015/11/22 ⋅ 2

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Python爬虫,抓取淘宝商品评论内容

作为一个资深吃货,网购各种零食是很频繁的,但是能否在浩瀚的商品库中找到合适的东西,就只能参考评论了!今天给大家分享用python做个抓取淘宝商品评论的小爬虫! 思路 我们就拿“德州扒鸡”...

python玩家 ⋅ 20分钟前 ⋅ 0

MySQL 内核深度优化

MYSQL数据库适用场景广泛,相较于Oracle、DB2性价比更高,Web网站、日志系统、数据仓库等场景都有MYSQL用武之地,但是也存在对于事务性支持不太好(MySQL 5.5版本开始默认引擎才是InnoDB事务...

java高级架构牛人 ⋅ 42分钟前 ⋅ 0

用户登录信息-钉子效果(基于jquery2.0)

本js效果使用jquery2.0,清晰的分解用户登录信息的(钉子效果),该效果直接用在作者网站(www.phpkhbd.com)上。 里面的难点有:定时器,延时。 大致效果如下: 一开始: 鼠标放上去的时候:...

宁哥实战课堂 ⋅ 43分钟前 ⋅ 0

解决yum安装报错Protected multilib versions

使用yum安装报错Protected multilib versions原因是因为多个库不能共存,不过更新的话也并不行,但是可以在安装命令后面加上如下一段命令: --setopt=protected_multilib=false 案例: 比如需...

北岩 ⋅ 54分钟前 ⋅ 0

为什么要学习Typescript???

简单来说 目前的typescript就是未来的javascript 为什么?? 这要从ECMA-262标准的第4版说起 对了 我们说的ES5 其实是ECMAScript3.1这个替代性建议被扶正了而已... 那么 第4版标准是什么? 看看...

hang1989 ⋅ 59分钟前 ⋅ 0

linux安装ipfs

一、下载ipfs # cd /usr/local/ipfs/ # wget https://dist.ipfs.io/go-ipfs/v0.4.15/go-ipfs_v0.4.15_linux-amd64.tar.gz # tar -zxvf go-ipfs_v0.4.15_linux-amd64.tar.gz 二、安装ipfs # ......

八戒八戒八戒 ⋅ 今天 ⋅ 0

jvm程序执行慢诊断手册

生产环境最多的几种事故之一就是程序执行慢,如果是web服务的话,表现就是响应时间长。本文分享,从业多年形成的排查守则。 诊断步骤 系统资源查看 首先是系统资源查看,而且必须是在第一步。...

xpbob ⋅ 今天 ⋅ 0

YII2 advanced 高级版本项目搭建-添加API应用以及多应用

一、YII安裝 安裝yii可以用composer安裝,也可以在yii中文社区下载归档文件安装 composer安装就不介绍了,因为要安装composer,比较麻烦,当然安装了composer是最好的,以后安装yii的插件要用...

botkenni ⋅ 今天 ⋅ 0

在jdk1.8的环境下模拟永久代内存溢出

相信不少小伙伴在看深入理解Java虚拟机的时候,作者给我们举例一个demo来发生PermGen space 1、通过List不断添加String.intern(); 2、通过设置对应的-XX:PermSize与-XX:MaxPermSize(更快看到...

虾几把写 ⋅ 今天 ⋅ 0

开发OpenDaylight组件的完整流程

在前面介绍学习了OpenDaylight的几个重要模块后,这里再来介绍下完整开发一个模块的过程。 OSGI的bundles提供被其他OSGI组件调用的服务。这个教程中展示的是Data Packet Service去解析数据包...

wangxuwei ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部