Post和Get在HttpClient的使用

来源:互联网 发布:ubuntu 标题栏消失 编辑:程序博客网 时间:2024/05/13 19:34

HttpClient提供的主要的功能如下:

实现了所有HTTP的方法(GET、POST、PUT、HEAD等)

支持自动转向

支持HTTPS协议

支持代理服务器

HTTP请求方法中最常用的是GET方法和POST方法。

 

1)GET方法

 

GET方法要求服务器将URL定位的资源放在响应报文的数据部分,回送给客户端。使用GET方法时,请求参数和对应的值附加在URL后面,利用一个问号(“”)代表URL的结尾与请求参数的开始。

// 通过GET方法获取页面信息

// 参数为对应页面的URL

public static InputStreamgetInputStreamFromUrl(String url) {

// 定义输出流变量

InputStream content = null;

try {

     // 取得默认的HttpClient实例

     HttpClient httpclient = new DefaultHttpClient();

     // 连接到服务器

     HttpResponse response = httpclient.execute(

     // 创建HttpGet实例

     new HttpGet(url));

     // 获取数据内容

     content = response.getEntity().getContent();

     } catch (Exception e) {

     }

     // 以InputStream形式返回页面信息

     return content;

}

 

上面的GET方法是以InputStream的形式返回页面的信息,很多情况下需要以String-Builder、String等字符串的格式。下面的方法把InputStream格式转为StringBuilder和String格式。

// 将InputStream格式转化为StringBuilder格式

private StringBuilder inputStreamToStringBuilder(InputStream is) {

     // 定义空字符串

     String line = "";

     // 定义StringBuilder的实例total

     StringBuilder total = new StringBuilder();

     // 定义BufferedReader,载入InputStreamReader

     BufferedReader rd = new BufferedReader(new InputStreamReader(is));

     // readLine是一个阻塞的方法,当没有断开连接的时候就会一直等待,直到有数据返回

     //  返回null表示读到数据流最末尾

     while ((line = rd.readLine()) != null) {

                total.append(line);

     }

     // 以StringBuilder形式返回数据内容

     return total;

}

// 将InputStream格式数据流转换为String类型

private StringinputStreamToString(InputStream is) {

     // 定义空字符串

     String s = "";

     String line = "";

     // 定义BufferedReader,载入InputStreamReader

     BufferedReader rd = new BufferedReader(new InputStreamReader(is));

     // 读取到字符串中

     while ((line = rd.readLine()) != null) {

                s += line;

     }

     // 以字符串方式返回信息

     return s;

}

 

2)POST方法

 

POST方法要求被请求服务器接收附在请求后面的数据,常用于提交表单。当客户端给服务器提供信息较多时可以使用POST方法。POST方法将请求参数封装在HTTP请求数据中,以名称值的形式出现,可以传输大量数据。

public void postData() {

     // 创建一个新的HttpClient Post头

     HttpClient httpclient = new DefaultHttpClient();

     HttpPost httppost = new HttpPost("http:// www.google.com");

     try {

                // 添加数据

                List<NameValuePair>nameValuePairs = new ArrayList<NameValuePair>(2);

                nameValuePairs.add(newBasicNameValuePair("id", "12345"));

                nameValuePairs.add(newBasicNameValuePair("stringdata", "myString"));

                // 使用utf-8格式对数据进行编码

                httppost.setEntity(newUrlEncodedFormEntity(nameValuePairs ,"UTF-8"));

                // 执行 HTTP Post 请求

                HttpResponse response = httpclient.execute(httppost);

     } catch (ClientProtocolException e) {     

     } catch (IOException e) {  

     }

}

 

使用HttpClient需要以下6个步骤:

步骤1 创建HttpClient的实例。

步骤2 创建某种连接方法的实例,对于get方法是GetMethod,而对于post方法是PostMethod。

步骤3 调用步骤1中创建好的实例的execute方法来执行步骤2中创建好的method实例。

步骤4 读response。

步骤5 释放连接。

步骤6 对得到的内容进行处理。

转自 http://book.2cto.com/201308/30060.html

0 0