PatchUtil
import java.util.Map;
import java.util.List;
import java.util.Iterator;
import java.io.IOException;
import java.util.ArrayList;
import org.apache.http.HttpEntity;
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.HttpPatch;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
/**
* PATCH请求工具类
*/
public class PatchUtil {
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 {
HttpPatch patch = new HttpPatch(url);
patch.setEntity(body);
for (String key : headers.keySet()) {
patch.addHeader(key, headers.get(key));
}
CloseableHttpClient client = HttpClients.createDefault();
CloseableHttpResponse response = client.execute(patch);
HttpEntity entity = response.getEntity();
String result = null;
if (entity != null) {
result = EntityUtils.toString(entity, UTF8);
}
response.close();
return result;
}
}