核心代码:
import JAVA.util.Map;
import java.util.List;
import java.util.Iterator;
import java.util.ArrayList;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.Charset;
import java.io.ByteArrayOutputStream;
import org.Apache.http.HttpEntity;
import org.apache.http.HttpHeaders;
import org.apache.http.HttpResponse;
import org.apache.http.util.EntityUtils;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.client.methods.HttpUriRequest;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
/**
* Post请求工具类
*/
public class PostUtil {
public static final String UTF8 = "utf-8";
private static final String CONTENT_TYPE = "Application/json";
public static String send(String url, Map<String, String> headers, Object params) {
try {
if (params instanceof Map)
return sendMap(url, headers, (Map<String, Object>)params);
else
return sendJson(url, headers, (String)params);
} catch (Exception e){
return null;
}
}
public static String sendMap(String url, Map<String, String> headers, Map<String, Object> params) throws IOException {
List<BasicNameValuePair> pairs = new ArrayList<>();
for (Iterator<String> iterator = params.keySet().iterator(); iterator.hasNext();) {
String name = iterator.next();
Object value = params.get(name);
pairs.add(new BasicNameValuePair(name, String.valueOf(value)));
}
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(pairs, UTF8);
return doAction(url, headers, entity);
}
public static String sendJson(String url, Map<String, String> headers, String params) throws IOException {
StringEntity entity = new StringEntity(params, UTF8);
return doAction(url, headers, entity);
}
private static String doAction(String url, Map<String, String> headers, StringEntity body) throws IOException {
HttpPost post = new HttpPost(url);
post.setEntity(body);
for (String key : headers.keySet())
post.addHeader(key, headers.get(key));
CloseableHttpClient client = HttpClients.createDefault();
CloseableHttpResponse response = client.execute(post);
HttpEntity entity = response.getEntity();
String result = null;
if (entity != null)
result = EntityUtils.toString(entity, UTF8);
response.close();
return result;
}
/**
* 发送 POST JSON 请求
*/
public static String postJson(String url, String data) {
HttpClientBuilder builder = HttpClientBuilder.create();
HttpUriRequest request = null;
// POST请求
HttpEntity entity = new StringEntity(data, UTF8);
HttpPost post = new HttpPost(url);
post.setEntity(entity);
request = post;
request.setHeader(HttpHeaders.CONTENT_TYPE, CONTENT_TYPE);
try (CloseableHttpClient closeableHttpClient = builder.build()) {
HttpResponse resp = closeableHttpClient.execute(request);
InputStream respIs = resp.getEntity().getContent();
byte[] respBytes = toByteArray(respIs);
String result = new String(respBytes, Charset.forName(UTF8));
return result;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
private static byte[] toByteArray(InputStream is) throws IOException {
ByteArrayOutputStream output = new ByteArrayOutputStream();
try {
byte[] b = new byte[4096];
boolean var3 = false;
int n;
while ((n = is.read(b)) != -1) {
output.write(b, 0, n);
}
byte[] var4 = output.toByteArray();
return var4;
} finally {
output.close();
}
}
}
路漫漫其修远兮,吾将上下而求索
译文:在追寻真理方面,前方的道路还很漫长,但我将百折不挠,不遗余力地去追求和探索。
如果您有什么好的想法与方法,欢迎在评论区留言,我们一起讨论~