Java HTTP请求
import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; import java.util.Map; import org.apache.http.HeaderElement; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; 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.impl.client.DefaultHttpRequestRetryHandler; import org.apache.http.message.BasicNameValuePair; import org.apache.http.params.CoreConnectionPNames; public class HttpHelper { public static String postRequest(String url, Map<String, String> parameters) throws Exception { DefaultHttpClient httpclient = new DefaultHttpClient(); httpclient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 3000); httpclient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, 3000); httpclient.setHttpRequestRetryHandler(new DefaultHttpRequestRetryHandler(0, false)); HttpPost httpPost = new HttpPost(url); List<NameValuePair> nvps = new ArrayList<NameValuePair>(); for (String key : parameters.keySet()) { nvps.add(new BasicNameValuePair(key, (String) parameters.get(key))); } //UrlEncodedFormEntity 将请求参数格式化为 http请求需要的格式 httpPost.setEntity(new UrlEncodedFormEntity(nvps, "utf-8")); httpPost.setHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8"); String charset = "utf-8"; InputStream is = null; BufferedReader br = null; try { HttpResponse response = httpclient.execute(httpPost); HttpEntity entity = response.getEntity(); int statusCode = response.getStatusLine().getStatusCode(); if (statusCode != 200) { System.err.println("Method failed: " + response.getStatusLine().getStatusCode()); System.err.println("Http服务链路异常:服务器状态码为" + statusCode); } String responseCharSet = getContentCharSet(entity); if ("ISO-8859-1".equals(responseCharSet)) { charset = responseCharSet; } StringBuffer buf = new StringBuffer();// 拼接返回的字符串 if (entity != null) { is = entity.getContent(); // 转换为字节输入流 br = new BufferedReader(new InputStreamReader(is, charset)); String body = null; while ((body = br.readLine()) != null) { buf.append(body); } } return buf.toString(); } catch (Exception e) { throw e; } finally { if (is != null) { //IO流一定要关闭 不然会耗费资源 is.close(); httpPost.releaseConnection(); } if(br != null) { br.close(); } } } //获取请求连接的编码格式 private static String getContentCharSet(final HttpEntity entity) { if (entity == null) { throw new IllegalArgumentException("HTTP entity may not be null"); } String charset = null; if (entity.getContentType() != null) { HeaderElement values[] = entity.getContentType().getElements(); if (values.length > 0) { NameValuePair param = values[0].getParameterByName("charset"); if (param != null) { charset = param.getValue(); } } } return charset; } }