文档章节

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
TCP/IP协议整理

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

cs_sharp
2016/02/23
35
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
3K
35

没有更多内容

加载失败,请刷新页面

加载更多

spring之ioc和aop学习摘要

一、IOC(Inversion of Control)或者依赖注入(Dependency Injection) 1、底层实现原理:反射 2、三大核心接口: BeanFactory:简单容器系列,只是实现了容器最基本的功能。 ApplicationC...

狠一点
13分钟前
4
0
缓存架构SpringBoot集成Curator实现zookeeper分布式锁

一、分布式锁简介 1、什么是锁 在单机环境下,当存在多个线程可以同时改变某个共享变量时,就需要同步来实现该功能,使其线程安全。 而同步就是通过锁来实现的。锁保证了同一时刻只有一个线程...

架构师springboot
15分钟前
1
0
11《Java核心技术》之Java提供了哪些IO方式? NIO如何实现多路复用?

一、提出问题 IO 一直是软件开发中的核心部分之一,伴随着海量数据增长和分布式系统的发展,IO 扩展能力愈发重要。幸运的是,Java 平台 IO 机制经过不断完善,虽然在某些方面仍有不足,但已经...

飞鱼说编程
22分钟前
1
0
简单介绍Java 的JAR包、EAR包、WAR包区别

WAR包 WAR(Web Archive file)网络应用程序文件,是与平台无关的文件格式,它允许将许多文件组合成一个压缩文件。War专用于Web方面。大部分的JAVA WEB工程,都是打成WAR包进行发布的。 War是...

linuxprobe16
22分钟前
1
0
55:Mysql用户管理|常用sql语句|mysql数据库备份恢复

1、Mysql用户管理; 场景,为了安全,新建的站点,创建新的用户,或者给已有用户授权,对某个库或者某个表有权限; 语法: grant all on *.* to 'user'@'127.0.0.1' identified by 'password'; g...

芬野de博客
26分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部