java 发送http get post 请求,以及java通过httpclient中转上传文件
package com.websocket.common.http.util;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.http.Consts;
import org.apache.http.HttpEntity;
import org.apache.http.HttpStatus;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.mime.HttpMultipartMode;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.entity.mime.content.FileBody;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class HttpRequestUtil {
private static final Logger LOGGER = LoggerFactory.getLogger(HttpRequestUtil.class);
/**
* send http get请求
* @param url
* @return
*/
public static String requestGet(String url){
CloseableHttpResponse response =null;
try {
CloseableHttpClient client = HttpClients.createDefault();
//发送get 请求
HttpGet request = new HttpGet(url);
request.addHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.87 Safari/537.36");
request.addHeader("accept", "*/*");
request.addHeader("connection", "Keep-Alive");
response = client.execute(request);
if((null!=response) && (HttpStatus.SC_OK == response.getStatusLine().getStatusCode())){
//读取返回结果
String result = "";
if(null != response.getEntity()){
result = EntityUtils.toString(response.getEntity(),"utf-8");
}
return result;
}else{
if(null!=response&&null!=response.getStatusLine()){
return "send requestGet statusCode:"+response.getStatusLine().getStatusCode();
}else{
return "send requestGet no response";
}
}
} catch (Exception e) {
LOGGER.error("send requestGet ERROR",e);
return "requestGet ERROR";
} finally {
if(null!=response){
try {
response.close();
} catch (Exception e2) {
LOGGER.error("response close error:",e2);
}
}
}
}
/**
* send http post request 请求
* @param url
* @param params
* @return
*/
public static String requestPost(String url,Map<String,String> params){
CloseableHttpResponse response = null;
String result = "";
try {
List<NameValuePair> formParams = new ArrayList<NameValuePair>();
for (Map.Entry<String, String> entry : params.entrySet()) {
formParams.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));
}
// 编码
HttpEntity formEntity = new UrlEncodedFormEntity(formParams, Consts.UTF_8);
CloseableHttpClient client = HttpClients.createDefault();
HttpPost request = new HttpPost(url);
request.setEntity(formEntity);
request.addHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.87 Safari/537.36");
request.addHeader("accept", "*/*");
request.addHeader("connection", "Keep-Alive");
response = client.execute(request);
if((null!=response) && (HttpStatus.SC_OK == response.getStatusLine().getStatusCode())){
//读取返回结果
if(null != response.getEntity()){
result = EntityUtils.toString(response.getEntity(),"utf-8");
}
return result;
}else{
if(null!=response&&null!=response.getStatusLine()){
return "send requestPost statusCode:"+response.getStatusLine().getStatusCode();
}else{
return "send requestPost no response";
}
}
} catch (Exception e) {
LOGGER.error("send POST request Exception:",e);
return "Post request Exception";
} finally {
if(null!=response){
try {
response.close();
} catch (Exception e2) {
LOGGER.error("response close error:",e2);
}
}
}
}
/**
* 中转上传,使用wx头像上传等
* @param url
* @param file
* @return
*/
public static String requestPost(String url,File file){
CloseableHttpResponse response = null;
String result = "";
try {
MultipartEntityBuilder multipartEntity = MultipartEntityBuilder.create();
multipartEntity.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
multipartEntity.addPart("media", new FileBody(file));
CloseableHttpClient client = HttpClients.createDefault();
HttpPost request = new HttpPost(url);
request.addHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.87 Safari/537.36");
request.addHeader("accept", "*/*");
request.addHeader("connection", "Keep-Alive");
request.setEntity(multipartEntity.build());
response = client.execute(request);
if((null!=response) && (HttpStatus.SC_OK == response.getStatusLine().getStatusCode())){
//读取返回结果
if(null != response.getEntity()){
result = EntityUtils.toString(response.getEntity(),"utf-8");
}
return result;
}else{
if(null!=response&&null!=response.getStatusLine()){
return "send requestPost uploadfile statusCode:"+response.getStatusLine().getStatusCode();
}else{
return "send requestPost uploadfile no response";
}
}
} catch (Exception e) {
LOGGER.error("send POST uploadfile request Exception:",e);
return "Post uploadfile request Exception";
} finally {
if(null!=response){
try {
response.close();
} catch (Exception e2) {
LOGGER.error("response close error:",e2);
}
}
}
}
public static void main(String args[]){
String result = requestPost("http://api.app.wantoutiao.net/news/newsList",new HashMap<String,String>());
System.out.println(result);
}
}