<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.0.2</version>
</dependency>
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<String,Object> paramsMap) {
HttpClient httpClient = new DefaultHttpClient();
HttpPost postRequest = new HttpPost();
List<NameValuePair> params = new ArrayList<>();
Set<String> 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<NameValuePair>
BasicNameValuePair
类的内部实现非常简单,并不是使用的map存储,而是直接在类中声明了两个属性,一个name,一个value