java实现http请求的方法常用有两种,一种则是通过java自带的标准类HttpURLConnection去实现,另一种是通过apache的httpclient去实现。
本文用httpclient去实现,需要导入httpclient和httpcore两个jar包,测试时用的httpclient-4.5.1和httpcore-4.4.3。
HttpMethod.java
package demo;
public enum HttpMethod {
GET, POST;
}
HttpHeader.java
package demo;
import java.util.HashMap;
import java.util.Map;
/**
* 请求头
*/
public class HttpHeader {
private Map<String, String> params = new HashMap<String, String>();
public HttpHeader addParam(String name, String value) {
this.params.put(name, value);
return this;
}
public Map<String, String> getParams() {
return this.params;
}
}
HttpParamers.java
package demo;
import java.io.IOException;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import com.alibaba.fastjson.JSON;
/**
* 请求参数
*/
public class HttpParamers {
private Map<String, String> params = new HashMap<String, String>();
private HttpMethod httpMethod;
private String jsonParamer = "";
public HttpParamers(HttpMethod httpMethod) {
this.httpMethod = httpMethod;
}
public static HttpParamers httpPostParamers() {
return new HttpParamers(HttpMethod.POST);
}
public static HttpParamers httpGetParamers() {
return new HttpParamers(HttpMethod.GET);
}
public HttpParamers addParam(String name, String value) {
this.params.put(name, value);
return this;
}
public HttpMethod getHttpMethod() {
return this.httpMethod;
}
public String getQueryString(String charset) throws IOException {
if ((this.params == null) || (this.params.isEmpty())) {
return null;
}
StringBuilder query = new StringBuilder();
Set<Map.Entry<String, String>> entries = this.params.entrySet();
for (Map.Entry<String, String> entry : entries) {
String name = entry.getKey();
String value = entry.getValue();
query.append("&").append(name).append("=").append(URLEncoder.encode(value, charset));
}
return query.substring(1);
}
public boolean isJson() {
return !isEmpty(this.jsonParamer);
}
public Map<String, String> getParams() {
retur