1.maven引入依赖
org.apache.httpcomponents
httpclient
4.0.2
2.请求示例
package utils;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* http工具类
*/
public class HttpUtils {
public static String doPost(String url, Map paramsMap) {
HttpClient httpClient = new DefaultHttpClient();
HttpPost postRequest = new HttpPost();
List params = new ArrayList<>();
Set paramsNames = paramsMap.keySet();
for (String paramsName : paramsNames) {
NameValuePair param = new BasicNameValuePair(paramsName, String.valueOf(paramsMap.get(paramsName)));
params.add(param);
}
try {
HttpEntity httpEntity = new UrlEncodedFormEntity(params, "UTF-8");
postRequest.setURI(new URI(url));
postRequest.setEntity(httpEntity);
HttpResponse response = httpClient.execute(postRequest);
if (response.getStatusLine().getStatusCode() == 200) {
HttpEntity resEntity = response.getEntity();
return EntityUtils.toString(resEntity, "utf-8");
} else {
HttpEntity resEntity = response.getEntity();
String message = EntityUtils.toString(resEntity, "utf-8");
System.out.println(message);
}
} catch (URISyntaxException | IOException e) {
System.out.println("请求异常");
e.printStackTrace();
}
return null;
}
}
UrlEncodedFormEntity用来设置请求的参数,参数类型为 List
BasicNameValuePair类的内部实现非常简单,并不是使用的map存储,而是直接在类中声明了两个属性,一个name,一个value