java httpclient教程_Java 使用HttpClient模拟 Http Get和Post 提交

该教程介绍了如何在Java中使用HttpClient库执行HTTP GET和POST请求。提供了doGet和doPost方法,处理查询参数和响应内容,同时解决了返回内容乱码的问题。
摘要由CSDN通过智能技术生成

package com.html580.connection;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.util.HashMap;

import java.util.Map;

import org.apache.commons.httpclient.HttpClient;

import org.apache.commons.httpclient.HttpStatus;

import org.apache.commons.httpclient.URIException;

import org.apache.commons.httpclient.methods.GetMethod;

import org.apache.commons.httpclient.methods.PostMethod;

import org.apache.commons.httpclient.util.URIUtil;

import org.junit.Test;

/**

* Description: httpclient模拟http请求,解决返回内容乱码问题

*/

public class HttpClientHelper {

/**

* 执行一个HTTP GET请求,返回请求响应的HTML

*

* @param url

* 请求的URL地址

* @param queryString

* 请求的查询参数,可以为null

* @param charset

* 字符集

* @param pretty

* 是否美化

* @return 返回请求响应的HTML

*/

public static String doGet(String url, String queryString, String charset,

boolean pretty) {

StringBuffer response = new StringBuffer();

HttpClient client = new HttpClient();

GetMethod method = new GetMethod(url);

try {

if (queryString != null && !queryString.equals(""))

// 对get请求参数做了http请求默认编码,好像没有任何问题,汉字编码后,就成为%式样的字符串

method.setQueryString(URIUtil.encodeQuery(queryString));

client.executeMethod(method);

if (method.getStatusCode() == HttpStatus.SC_OK) {

BufferedReader reader = new BufferedReader(

new InputStreamReader(method.getResponseBodyAsStream(),

charset));

String line;

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

if (pretty)

response.append(line).append(

System.getProperty("line.separator"));

else

response.append(line);

}

reader.close();

}

} catch (URIException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

} finally {

method.releaseConnection();

}

return response.toString();

}

/**

* 执行一个HTTP POST请求,返回请求响应的HTML

*

* @param url

* 请求的URL地址

* @param params

* 请求的查询参数,可以为null

* @param charset

* 字符集

* @param pretty

* 是否美化

* @return 返回请求响应的HTML

*/

public static String doPost(String url, Mapparams,

String charset, boolean pretty) {

StringBuffer response = new StringBuffer();

HttpClient client = new HttpClient();

PostMethod method = new PostMethod(url);

// 设置Http Post数据

if (params != null) {

for (Map.Entryentry : params.entrySet()) {

method.addParameter(entry.getKey(), entry.getValue());

}

}

try {

client.executeMethod(method);

if (method.getStatusCode() == HttpStatus.SC_OK) {

BufferedReader reader = new BufferedReader(

new InputStreamReader(method.getResponseBodyAsStream(),

charset));

String line;

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

if (pretty)

response.append(line).append(

System.getProperty("line.separator"));

else

response.append(line);

}

reader.close();

}

} catch (IOException e) {

e.printStackTrace();

} finally {

method.releaseConnection();

}

return response.toString();

}

public void testSendGet() {

String url = "http://localhost:8080/jeeweb/testServlet";

String params = "username=admin&password=123456";

String str = doGet(url, params,"GBK", true);

System.out.println(str);

}

@Test

public void testSendPost() {

String url = "http://localhost:8080/jeeweb/testServlet";

Mapparams = new HashMap();

params.put("username", "admin");

params.put("password", "123456");

String str = doPost(url, params,"GBK", true);

System.out.println(str);

}

}相关文章:Java模拟Http Get和Post 提交

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值