java http开发_java httpClient接口开发

packagecom.test;importjava.io.File;importjava.io.IOException;importjava.security.KeyManagementException;importjava.security.KeyStoreException;importjava.security.NoSuchAlgorithmException;importjava.util.Iterator;importjava.util.List;importjava.util.Map;importorg.apache.http.HttpEntity;importorg.apache.http.HttpStatus;importorg.apache.http.client.config.RequestConfig;importorg.apache.http.client.methods.CloseableHttpResponse;importorg.apache.http.client.methods.HttpGet;importorg.apache.http.client.methods.HttpPost;importorg.apache.http.config.Registry;importorg.apache.http.config.RegistryBuilder;importorg.apache.http.conn.socket.ConnectionSocketFactory;importorg.apache.http.conn.socket.PlainConnectionSocketFactory;importorg.apache.http.conn.ssl.SSLConnectionSocketFactory;importorg.apache.http.conn.ssl.SSLContextBuilder;importorg.apache.http.conn.ssl.TrustSelfSignedStrategy;importorg.apache.http.entity.ContentType;importorg.apache.http.entity.StringEntity;importorg.apache.http.entity.mime.MultipartEntityBuilder;importorg.apache.http.entity.mime.content.FileBody;importorg.apache.http.entity.mime.content.StringBody;importorg.apache.http.impl.client.CloseableHttpClient;importorg.apache.http.impl.client.DefaultHttpRequestRetryHandler;importorg.apache.http.impl.client.HttpClients;importorg.apache.http.impl.conn.PoolingHttpClientConnectionManager;importorg.apache.http.util.EntityUtils;/***

*@authorH__D

* @date 2016年10月19日 上午11:27:25

**/

public classHttpClientUtil {//utf-8字符编码

public static final String CHARSET_UTF_8 = "utf-8";//HTTP内容类型。

public static final String CONTENT_TYPE_TEXT_HTML = "text/xml";//HTTP内容类型。相当于form表单的形式,提交数据

public static final String CONTENT_TYPE_FORM_URL = "application/x-www-form-urlencoded";//HTTP内容类型。相当于form表单的形式,提交数据

public static final String CONTENT_TYPE_JSON_URL = "application/json;charset=utf-8";//连接管理器

private staticPoolingHttpClientConnectionManager pool;//请求配置

private staticRequestConfig requestConfig;static{try{//System.out.println("初始化HttpClientTest~~~开始");

SSLContextBuilder builder = newSSLContextBuilder();

builder.loadTrustMaterial(null, newTrustSelfSignedStrategy());

SSLConnectionSocketFactory sslsf= newSSLConnectionSocketFactory(

builder.build());//配置同时支持 HTTP 和 HTPPS

Registry socketFactoryRegistry = RegistryBuilder.create().register("http", PlainConnectionSocketFactory.getSocketFactory()).register("https", sslsf).build();//初始化连接管理器

pool = newPoolingHttpClientConnectionManager(

socketFactoryRegistry);//将最大连接数增加到200,实际项目最好从配置文件中读取这个值

pool.setMaxTotal(200);//设置最大路由

pool.setDefaultMaxPerRoute(2);//根据默认超时限制初始化requestConfig

int socketTimeout = 10000;int connectTimeout = 10000;int connectionRequestTimeout = 10000;

requestConfig=RequestConfig.custom().setConnectionRequestTimeout(

connectionRequestTimeout).setSocketTimeout(socketTimeout).setConnectTimeout(

connectTimeout).build();//System.out.println("初始化HttpClientTest~~~结束");

} catch(NoSuchAlgorithmException e) {

e.printStackTrace();

}catch(KeyStoreException e) {

e.printStackTrace();

}catch(KeyManagementException e) {

e.printStackTrace();

}//设置请求超时时间

requestConfig = RequestConfig.custom().setSocketTimeout(50000).setConnectTimeout(50000)

.setConnectionRequestTimeout(50000).build();

}public staticCloseableHttpClient getHttpClient() {

CloseableHttpClient httpClient=HttpClients.custom()//设置连接池管理

.setConnectionManager(pool)//设置请求配置

.setDefaultRequestConfig(requestConfig)//设置重试次数

.setRetryHandler(new DefaultHttpRequestRetryHandler(0, false))

.build();returnhttpClient;

}/*** 发送Post请求

*

*@paramhttpPost

*@return

*/

private staticString sendHttpPost(HttpPost httpPost) {

CloseableHttpClient httpClient= null;

CloseableHttpResponse response= null;//响应内容

String responseContent = null;try{//创建默认的httpClient实例.

httpClient =getHttpClient();//配置请求信息

httpPost.setConfig(requestConfig);//执行请求

response =httpClient.execute(httpPost);//得到响应实例

HttpEntity entity =response.getEntity();//可以获得响应头//Header[] headers = response.getHeaders(HttpHeaders.CONTENT_TYPE);//for (Header header : headers) {//System.out.println(header.getName());//}//得到响应类型//System.out.println(ContentType.getOrDefault(response.getEntity()).getMimeType());//判断响应状态

if (response.getStatusLine().getStatusCode() >= 300) {throw newException("HTTP Request is not success, Response code is " +response.getStatusLine().getStatusCode());

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

responseContent=EntityUtils.toString(entity, CHARSET_UTF_8);

EntityUtils.consume(entity);

}

}catch(Exception e) {

e.printStackTrace();

}finally{try{//释放资源

if (response != null) {

response.close();

}

}catch(IOException e) {

e.printStackTrace();

}

}returnresponseContent;

}/*** 发送Get请求

*

*@paramhttpGet

*@return

*/

private staticString sendHttpGet(HttpGet httpGet) {

CloseableHttpClient httpClient= null;

CloseableHttpResponse response= null;//响应内容

String responseContent = null;try{//创建默认的httpClient实例.

httpClient =getHttpClient();//配置请求信息

httpGet.setConfig(requestConfig);//执行请求

response =httpClient.execute(httpGet);//得到响应实例

HttpEntity entity =response.getEntity();//可以获得响应头//Header[] headers = response.getHeaders(HttpHeaders.CONTENT_TYPE);//for (Header header : headers) {//System.out.println(header.getName());//}//得到响应类型//System.out.println(ContentType.getOrDefault(response.getEntity()).getMimeType());//判断响应状态

if (response.getStatusLine().getStatusCode() >= 300) {throw newException("HTTP Request is not success, Response code is " +response.getStatusLine().getStatusCode());

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

responseContent=EntityUtils.toString(entity, CHARSET_UTF_8);

EntityUtils.consume(entity);

}

}catch(Exception e) {

e.printStackTrace();

}finally{try{//释放资源

if (response != null) {

response.close();

}

}catch(IOException e) {

e.printStackTrace();

}

}returnresponseContent;

}/*** 发送 post请求

*

*@paramhttpUrl

* 地址*/

public staticString sendHttpPost(String httpUrl) {//创建httpPost

HttpPost httpPost = newHttpPost(httpUrl);returnsendHttpPost(httpPost);

}/*** 发送 get请求

*

*@paramhttpUrl*/

public staticString sendHttpGet(String httpUrl) {//创建get请求

HttpGet httpGet = newHttpGet(httpUrl);returnsendHttpGet(httpGet);

}/*** 发送 post请求(带文件)

*

*@paramhttpUrl

* 地址

*@parammaps

* 参数

*@paramfileLists

* 附件*/

public static String sendHttpPost(String httpUrl, Map maps, ListfileLists) {

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

MultipartEntityBuilder meBuilder =MultipartEntityBuilder.create();if (maps != null) {for(String key : maps.keySet()) {

meBuilder.addPart(key,newStringBody(maps.get(key), ContentType.TEXT_PLAIN));

}

}if (fileLists != null) {for(File file : fileLists) {

FileBody fileBody= newFileBody(file);

meBuilder.addPart("files", fileBody);

}

}

HttpEntity reqEntity=meBuilder.build();

httpPost.setEntity(reqEntity);returnsendHttpPost(httpPost);

}/*** 发送 post请求

*

*@paramhttpUrl

* 地址

*@paramparams

* 参数(格式:key1=value1&key2=value2)

**/

public staticString sendHttpPost(String httpUrl, String params) {

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

try{//设置参数

if (params != null && params.trim().length() > 0) {

StringEntity stringEntity= new StringEntity(params, "UTF-8");

stringEntity.setContentType(CONTENT_TYPE_FORM_URL);

httpPost.setEntity(stringEntity);

}

}catch(Exception e) {

e.printStackTrace();

}returnsendHttpPost(httpPost);

}/*** 发送 post请求

*

*@parammaps

* 参数*/

public static String sendHttpPost(String httpUrl, Mapmaps) {

String parem=convertStringParamter(maps);returnsendHttpPost(httpUrl, parem);

}/*** 发送 post请求 发送json数据

*

*@paramhttpUrl

* 地址

*@paramparamsJson

* 参数(格式 json)

**/

public staticString sendHttpPostJson(String httpUrl, String paramsJson) {

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

try{//设置参数

if (paramsJson != null && paramsJson.trim().length() > 0) {

StringEntity stringEntity= new StringEntity(paramsJson, "UTF-8");

stringEntity.setContentType(CONTENT_TYPE_JSON_URL);

httpPost.setEntity(stringEntity);

}

}catch(Exception e) {

e.printStackTrace();

}returnsendHttpPost(httpPost);

}/*** 发送 post请求 发送xml数据

*

*@paramhttpUrl 地址

*@paramparamsXml 参数(格式 Xml)

**/

public staticString sendHttpPostXml(String httpUrl, String paramsXml) {

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

try{//设置参数

if (paramsXml != null && paramsXml.trim().length() > 0) {

StringEntity stringEntity= new StringEntity(paramsXml, "UTF-8");

stringEntity.setContentType(CONTENT_TYPE_TEXT_HTML);

httpPost.setEntity(stringEntity);

}

}catch(Exception e) {

e.printStackTrace();

}returnsendHttpPost(httpPost);

}/*** 将map集合的键值对转化成:key1=value1&key2=value2 的形式

*

*@paramparameterMap

* 需要转化的键值对集合

*@return字符串*/

public staticString convertStringParamter(Map parameterMap) {

StringBuffer parameterBuffer= newStringBuffer();if (parameterMap != null) {

Iterator iterator=parameterMap.keySet().iterator();

String key= null;

String value= null;while(iterator.hasNext()) {

key=(String) iterator.next();if (parameterMap.get(key) != null) {

value=(String) parameterMap.get(key);

}else{

value= "";

}

parameterBuffer.append(key).append("=").append(value);if(iterator.hasNext()) {

parameterBuffer.append("&");

}

}

}returnparameterBuffer.toString();

}public static void main(String[] args) throwsException {

System.out.println(sendHttpGet("http://www.baidu.com"));

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明
要实现微信公众平台修改客服账号接口,需要进行以下步骤: 1. 获取access_token 在调用微信公众平台的接口之前,需要先获取access_token,access_token是调用微信接口的唯一凭证,可以通过以下接口获取: ``` https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET ``` 其中APPID和APPSECRET是在微信公众平台中申请的,通过调用该接口可以获取到access_token。 2. 构造请求URL 构造修改客服账号接口的请求URL,例如: ``` https://api.weixin.qq.com/customservice/kfaccount/update?access_token=ACCESS_TOKEN ``` 其中ACCESS_TOKEN是第一步获取到的access_token。 3. 发送请求 使用Java发送HTTP请求,将请求URL和请求参数以POST方式发送给微信公众平台,例如: ``` String url = "https://api.weixin.qq.com/customservice/kfaccount/update?access_token=" + ACCESS_TOKEN; String json = "{\"kf_account\": \"test1@test\",\"nickname\": \"客服1\",\"password\": \"pswmd5\"}"; HttpClient httpClient = new DefaultHttpClient(); HttpPost httpPost = new HttpPost(url); httpPost.setHeader("Content-Type", "application/json;charset=utf-8"); httpPost.setEntity(new StringEntity(json, "UTF-8")); HttpResponse response = httpClient.execute(httpPost); ``` 其中json是请求参数,包括要修改的客服账号、昵称和密码。 4. 处理响应 根据微信公众平台返回的响应结果,进行相应的处理,例如: ``` if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { String result = EntityUtils.toString(response.getEntity(), "UTF-8"); JSONObject jsonObject = JSONObject.parseObject(result); String errcode = jsonObject.getString("errcode"); if ("0".equals(errcode)) { System.out.println("修改客服账号成功!"); } else { System.out.println("修改客服账号失败,错误码:" + errcode); } } ``` 以上就是Java实现微信公众平台修改客服账号接口的步骤,需要注意的是,要正确填写请求参数,并且在发送请求之前先获取到access_token。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值