场景说明:项目需要请求微信端,将数据抛给微信公众号,填充模板数据进行推送。
代码说明:我将代码封装成工具,然后在接口中进行调用,传入需要发送的数据,特别说明:我的URL是从数据库查出来动态显示的,你们根据自己的需求可以更改传入的参数。另外,我不需要返回值,如果你们需要返回值,做相应的修改即可。
jar包说明:
需要两个jar包的支持,这里我提供maven的jar:
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.2</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpmime</artifactId>
<version>4.3</version>
</dependency>
CSDN资源下载:https://download.csdn.net/download/qq_35393472/11140736
代码如下:
public class HttpClientSendWeChatRequest {
public HttpClientSendWeChatRequest sendRequest(String userName,String content,Integer status,String time,String url,String partyName) {
HttpResponse response = null;
try {
// 创建HttpClient实例及Post方法
CloseableHttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(url);
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
//因为传入的值为汉字,所以使用ContentType.create(HTTP.PLAIN_TEXT_TYPE,HTTP.UTF_8)进行一个字符的转换,否则将会出现乱码。字母和数字不需要使用。
builder.addTextBody("userName", userName, ContentType.create(HTTP.PLAIN_TEXT_TYPE,HTTP.UTF_8));
builder.addTextBody("partyName", partyName, ContentType.create(HTTP.PLAIN_TEXT_TYPE,HTTP.UTF_8));
builder.addTextBody("content", content,ContentType.create(HTTP.PLAIN_TEXT_TYPE,HTTP.UTF_8));
builder.addTextBody("status", status.toString(), ContentType.TEXT_PLAIN);
builder.addTextBody("time", time, ContentType.TEXT_PLAIN);
HttpEntity multipart = builder.build();
httppost.setEntity(multipart);
response =httpclient.execute(httppost);// 发送请求
httppost.releaseConnection();
httpclient.getConnectionManager().shutdown();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
接口调用语句:
HttpClientSendWeChatRequest ht =new HttpClientSendWeChatRequest().sendRequest(userName,content,status,time,url,partyName);