public void post(List<NameValuePair> payload) throws Exception{ HttpPost post = new HttpPost(uri); HttpEntity result = null; try { UrlEncodedFormEntity entity = new UrlEncodedFormEntity(payload, charset); post.setEntity(entity); if (LOG.isDebugEnabled()) { LOG.debug("sending:" + payload); } HttpResponse response = _httpClient.execute(post); StatusLine statusLine = response.getStatusLine(); if (statusLine.getStatusCode() != HttpStatus.SC_OK) { result = response.getEntity(); StringBuilder msg = new StringBuilder(); msg.append("http response with code " + statusLine.getStatusCode()); msg.append("\n"); msg.append("post request: " + post.getURI()); msg.append("\n"); msg.append(statusLine.getReasonPhrase()); if (result != null) { msg.append("\n\n"); msg.append(EntityUtils.toString(result, "UTF-8")); msg.append("\n\n"); } throw new UmcException(msg.toString()); } if (response.getEntity() != null) { BufferedReader reader = new BufferedReader( new InputStreamReader( response.getEntity().getContent(), "UTF-8")); String line = null; while ((line = reader.readLine()) != null) { if (line.indexOf("success") < 0) System.out.println(line); } } } finally { if (result != null) try { EntityUtils.consume(result); } catch (IOException e) { } post.abort(); } }
uri是请求的地址,charset是编码“UTF-8”,List<NameValuePair>就是表单参数集
ClientConnectionManager ccManager = new ThreadSafeClientConnManager(); HttpClient _httpClient = new DefaultHttpClient(ccManager);
2) 采用JDK的HttpConnection构造http客户端,
////发送 HttpURLConnection conn = null; try { URL url = new URL(Your_URL); conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("POST"); conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); conn.setUseCaches(false); conn.setDoOutput(true); OutputStreamWriter osw = new OutputStreamWriter( conn.getOutputStream()); StringBuffer sb = new StringBuffer(); addPair(sb, "p1", "p1value"); addPair(sb, "p2", "p2value"); osw.write(sb.substring(0, sb.length() - 1)); osw.flush(); BufferedReader reader = new BufferedReader( new InputStreamReader(conn.getInputStream())); String line = null; sb = new StringBuffer(); while ((line = reader.readLine()) != null) { sb.append(line); } line = sb.toString(); // 处理返回的字符串line return; //// } catch (IOException e) { // handle e } finally { if (conn != null) conn.disconnect(); }///发送结束
addPair方法:
public static void addPair(StringBuffer sb, String name, String value) { if (value == null) { return; } sb.append(name); sb.append("="); sb.append(value); sb.append("&"); }