java http 封装_Java使用httpclient封装post请求和get请求

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 21:02   4055   0

package com.marco.common;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.net.URI;

import java.util.ArrayList;

import java.util.Iterator;

import java.util.List;

import java.util.Map;

import org.apache.http.HttpEntity;

import org.apache.http.HttpResponse;

import org.apache.http.HttpStatus;

import org.apache.http.NameValuePair;

import org.apache.http.StatusLine;

import org.apache.http.client.HttpClient;

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.StringEntity;

import org.apache.http.impl.client.CloseableHttpClient;

import org.apache.http.impl.client.DefaultHttpClient;

import org.apache.http.impl.client.HttpClients;

import org.apache.http.message.BasicNameValuePair;

import org.apache.http.protocol.HTTP;

import org.apache.http.util.EntityUtils;

import org.apache.log4j.Logger;

/**

* @author 马弦

* @date 2017年10月23日 下午2:49

* HttpClient工具类

*/

public class HttpUtil {

private static Logger logger = Logger.getLogger(HttpUtil.class);

/**

* get请求

* @return

*/

public static String doGet(String url) {

try {

HttpClient client = new DefaultHttpClient();

//发送get请求

HttpGet request = new HttpGet(url);

HttpResponse response = client.execute(request);

/**请求发送成功,并得到响应**/

if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {

/**读取服务器返回过来的json字符串数据**/

String strResult = EntityUtils.toString(response.getEntity());

return strResult;

}

}

catch (IOException e) {

e.printStackTrace();

}

return null;

}

/**

* post请求(用于key-value格式的参数)

* @param url

* @param params

* @return

*/

public static String doPost(String url, Map params){

BufferedReader in = null;

try {

// 定义HttpClient

HttpClient client = new DefaultHttpClient();

// 实例化HTTP方法

HttpPost request = new HttpPost();

request.setURI(new URI(url));

//设置参数

List nvps = new ArrayList();

for (Iterator iter = params.keySet().iterator(); iter.hasNext();) {

String name = (String) iter.next();

String value = String.valueOf(params.get(name));

nvps.add(new BasicNameValuePair(name, value));

//System.out.println(name +"-"+value);

}

request.setEntity(new UrlEncodedFormEntity(nvps,HTTP.UTF_8));

HttpResponse response = client.execute(request);

int code = response.getStatusLine().getStatusCode();

if(code == 200){//请求成功

in = new BufferedReader(new InputStreamReader(response.getEntity()

.getContent(),"utf-8"));

StringBuffer sb = new StringBuffer("");

String line = "";

String NL = System.getProperty("line.separator");

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

sb.append(line + NL);

}

in.close();

return sb.toString();

}

else{//

System.out.println("状态码:" + code);

return null;

}

}

catch(Exception e){

e.printStackTrace();

return null;

}

}

/**

* post请求(用于请求json格式的参数)

* @param url

* @param params

* @return

*/

public static String doPost(String url, String params) throws Exception {

CloseableHttpClient httpclient = HttpClients.createDefault();

HttpPost httpPost = new HttpPost(url);// 创建httpPost

httpPost.setHeader("Accept", "application/json");

httpPost.setHeader("Content-Type", "application/json");

String charSet = "UTF-8";

StringEntity entity = new StringEntity(params, charSet);

httpPost.setEntity(entity);

CloseableHttpResponse response = null;

try {

response = httpclient.execute(httpPost);

StatusLine status = response.getStatusLine();

int state = status.getStatusCode();

if (state == HttpStatus.SC_OK) {

HttpEntity responseEntity = response.getEntity();

String jsonString = EntityUtils.toString(responseEntity);

return jsonString;

}

else{

logger.error("请求返回:"+state+"("+url+")");

}

}

finally {

if (response != null) {

try {

response.close();

} catch (IOException e) {

e.printStackTrace();

}

}

try {

httpclient.close();

} catch (IOException e) {

e.printStackTrace();

}

}

return null;

}

}

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP