1、jodd.http
public class HttpUtil {
/**
* 发送Get请求
* @param url : 请求的连接
* @param params : 请求参数,无参时传null
* @return
*/
public static String sendGet(String url,Map params){
HttpRequest request = HttpRequest.get(url);
if(params!=null) {
request.query(params);
}
HttpResponse response = request.send();
String respJson = response.bodyText();
return respJson;
}
/**
* 发送Post请求-json数据
* @param url : 请求的连接
* @param params : 请求参数,无参时传null
* @return
*/
public static String sendPostToJson(String url,Map params ){
HttpRequest request = HttpRequest.post(url);
request.contentType("application/json");
request.charset("utf-8");
//参数详情
if(params!=null) {
request.body(JSON.toJSONString(params));
}
HttpResponse response = request.send();
String respJson = response.bodyText();
return respJson;
}
/**
* 发送Post请求
* @param url : 请求的连接
* @param params : 请求参数,无参时传null
* @param paramsDatails : 参数详情,没有时传null
* @return
*/
public static String sendPost(String url,Map params ){
HttpRequest request = HttpRequest.post(url);
//参数详情
if(params!=null) {
request.form(params);
}
HttpResponse response = request.send();
String respJson = response.bodyText();
return respJson;
}
/**
* 发送Delete请求
* @param url : 请求的连接
* @param params : 请求参数,无参时传null
* @return
*/
public static String sendDelete(String url,Map params){
HttpRequest request = HttpRequest.delete(url);
if(params!=null) {
request.form(params);
}
HttpResponse response = request.send();
String respJson = response.bodyText();
return respJson;
}
// 测试
public static void main(String[] args) {
//Get
String responbody = HttpUtil.sendGet("https://www.baidu.com", null);
System.out.println(responbody);
}
}
2、URL连接
package com.powerX.httpClient;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
public class HttpClient {
public static String doGet(String httpurl) {
HttpURLConnection connection = null;
InputStream is = null;
BufferedReader br = null;
String result = null;// 返回结果字符串
try {
// 创建远程url连接对象
URL url = new URL(httpurl);
// 通过远程url连接对象打开一个连接,强转成httpURLConnection类
connection = (HttpURLConnection) url.openConnection();
// 设置连接方式:get
connection.setRequestMethod("GET");
// 设置连接主机服务器的超时时间:15000毫秒
connection.setConnectTimeout(15000);
// 设置读取远程返回的数据时间:60000毫秒
connection.setReadTimeout(60000);
// 发送请求
connection.connect();
// 通过connection连接,获取输入流
if (connection.getResponseCode() == 200) {
is = connection.getInputStream();
// 封装输入流is,并指定字符集
br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
// 存放数据
StringBuffer sbf = new StringBuffer();
String temp = null;
while ((temp = br.readLine()) != null) {
sbf.append(temp);
sbf.append("\r\n");
}
result = sbf.toString();
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
// 关闭资源
if (null != br) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (null != is) {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
connection.disconnect();// 关闭远程连接
}
return result;
}
public static String doPost(String httpUrl, String param) {
HttpURLConnection connection = null;
InputStream is = null;
OutputStream os = null;
BufferedReader br = null;
String result = null;
try {
URL url = new URL(httpUrl);
// 通过远程url连接对象打开连接
connection = (HttpURLConnection) url.openConnection();
// 设置连接请求方式
connection.setRequestMethod("POST");
// 设置连接主机服务器超时时间:15000毫秒
connection.setConnectTimeout(15000);
// 设置读取主机服务器返回数据超时时间:60000毫秒
connection.setReadTimeout(60000);
// 默认值为:false,当向远程服务器传送数据/写数据时,需要设置为true
connection.setDoOutput(true);
// 默认值为:true,当前向远程服务读取数据时,设置为true,该参数可有可无
connection.setDoInput(true);
// 设置传入参数的格式:请求参数应该是 name1=value1&name2=value2 的形式。
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
// 设置鉴权信息:Authorization: Bearer da3efcbf-0845-4fe3-8aba-ee040be542c0
connection.setRequestProperty("Authorization", "Bearer da3efcbf-0845-4fe3-8aba-ee040be542c0");
// 通过连接对象获取一个输出流
os = connection.getOutputStream();
// 通过输出流对象将参数写出去/传输出去,它是通过字节数组写出的
os.write(param.getBytes());
// 通过连接对象获取一个输入流,向远程读取
if (connection.getResponseCode() == 200) {
is = connection.getInputStream();
// 对输入流对象进行包装:charset根据工作项目组的要求来设置
br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
StringBuffer sbf = new StringBuffer();
String temp = null;
// 循环遍历一行一行读取数据
while ((temp = br.readLine()) != null) {
sbf.append(temp);
sbf.append("\r\n");
}
result = sbf.toString();
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
// 关闭资源
if (null != br) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (null != os) {
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (null != is) {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
// 断开与远程地址url的连接
connection.disconnect();
}
return result;
}
}
3、CloseableHttpClient
/**
* POST---有参测试(普通参数)
*
* @date 2018年7月13日 下午4:18:50
*/
@Test
public void doPostTestFour() {
// 获得Http客户端(可以理解为:你得先有一个浏览器;注意:实际上HttpClient与浏览器是不一样的)
CloseableHttpClient httpClient = HttpClientBuilder.create().build();
// 参数
StringBuffer params = new StringBuffer();
try {
// 字符数据最好encoding以下;这样一来,某些特殊字符才能传过去(如:某人的名字就是“&”,不encoding的话,传不过去)
params.append("name=" + URLEncoder.encode("&", "utf-8"));
params.append("&");
params.append("age=24");
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
}
// 创建Post请求
HttpPost httpPost = new HttpPost("http://localhost:12345/doPostControllerFour" + "?" + params);
// 设置ContentType(注:如果只是传普通参数的话,ContentType不一定非要用application/json)
httpPost.setHeader("Content-Type", "application/json;charset=utf8");
// 响应模型
CloseableHttpResponse response = null;
try {
// 由客户端执行(发送)Post请求
response = httpClient.execute(httpPost);
// 从响应模型中获取响应实体
HttpEntity responseEntity = response.getEntity();
System.out.println("响应状态为:" + response.getStatusLine());
if (responseEntity != null) {
System.out.println("响应内容长度为:" + responseEntity.getContentLength());
System.out.println("响应内容为:" + EntityUtils.toString(responseEntity));
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
// 释放资源
if (httpClient != null) {
httpClient.close();
}
if (response != null) {
response.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
4、HttpClient
HttpClient client =newHttpClient();
GetMethod method =newGetMethod(url);
if(null== url || !url.startsWith("http")) {
thrownewException("请求地址格式不对");
}
// 设置请求的编码方式
if(null!= charset) {
method.addRequestHeader("Content-Type","application/x-www-form-urlencoded; charset="+ charset);
}else{
method.addRequestHeader("Content-Type","application/x-www-form-urlencoded; charset="+"utf-8");
}
intstatusCode = client.executeMethod(method);
if(statusCode != HttpStatus.SC_OK) {// 打印服务器返回的状态
System.out.println("Method failed: "+ method.getStatusLine());
}
// 返回响应消息
byte[] responseBody = method.getResponseBodyAsString().getBytes(method.getResponseCharSet());
// 在返回响应消息使用编码(utf-8或gb2312)
String response =newString(responseBody,"utf-8");
System.out.println("------------------response:"+ response);
// 释放连接
method.releaseConnection();
returnresponse;