司要將自己的產品封裝一個WebService平台,所以最近開始學習使用Java發送Http請求的內容。這一塊之前用PHP的時候寫的也比較多,從用最基本的Socket和使用第三方外掛程式都用過。
學習了Java兩種方式,一種是用java.net.URLConnection,另一種則是大名鼎鼎的HttpClient。效率上沒有做深入研究,使用java.net.URLConnection比較麻煩,而HttpClient就比較愜意。
代碼如下 |
複製代碼 |
java.net.URLConnection方法: private static void urlConnectionPost() { StringBuilder responseBuilder = null; BufferedReader reader = null; OutputStreamWriter wr = null; URL url; try { url = new URL(TEST_URL); URLConnection conn = url.openConnection(); conn.setDoOutput(true); conn.setConnectTimeout(1000 * 5); wr = new OutputStreamWriter(conn.getOutputStream()); wr.write(""); wr.flush(); // Get the response reader = new BufferedReader(new InputStreamReader(conn .getInputStream())); responseBuilder = new StringBuilder(); String line = null; while ((line = reader.readLine()) != null) { responseBuilder.append(line + "n"); } wr.close(); reader.close(); System.out.println(responseBuilder.toString()); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } HttpClient方法:
private static void httpClientPost() { HttpClient client = new DefaultHttpClient(); HttpPost post = new HttpPost(TEST_URL); try { ContentProducer cp = new ContentProducer() { public void writeTo(OutputStream outstream) throws IOException { Writer writer = new OutputStreamWriter(outstream, "UTF-8"); writer.write(""); writer.flush(); } }; post.setEntity(new EntityTemplate(cp)); HttpResponse response = client.execute(post); System.out.println(EntityUtils.toString(response.getEntity())); } catch (ClientProtocolException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } |