司要將自己的產品封裝一個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();
}
} |