Java HttpClient 記錄


花了差不多一晚時間,終於將想要測試的東西基本測試了一次,
眼睛也模擬了,可能真的老了,不過一如以往還是學了不少,很久也沒有在這寫筆記了..
先不說太多,筆記一下..

基本上由於看見網絡上人人都說 HTTPClient 比起 Java 的 API 好..
所以便找了點時間做了個簡單測試?因為 API 對於多量的連結不好,有自己的協議,我沒證實.

HTTPClient 雖然說得上方便,不過感覺網絡中的都只是代碼,沒有詳細的說明如何套用..
看了幾篇文章都只是說要將 jar 放到 path 之中才可以用丫,天丫,我不想這樣..
於是就只好將 jar 解出來,一個個檔案的拉進檔案目錄之中,原來還少了 logging , codec 呢

Core, Commons : http://hc.apache.org/downloads.cgi
Common logging : http://commons.apache.org/logging
Coomon codec : http://commons.apache.org/codec

解開後放在相同的目錄之中就可以了,這樣應該就不會有 Runtime error 了..orz…

之後再將 Java 的測試程式寫完了,終於成了樣子..
再來簡單的再寫了個 PHP 檢查程式 代碼為 :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
if (!empty($_POST)) {
echo "POST<br />";
echo "<pre>";
print_r($_POST);
echo "</pre>";
}

if (!empty($_GET)) {
echo "GET<br />";
echo "<pre>";
print_r($_GET);
echo "</pre>";
}
?>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
import java.io.IOException;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.NameValuePair;

class SeekTest {
public static void main(String[] args) throws IOException {
HttpClient client = new HttpClient();
client.getHostConfiguration().setHost("localhost", 80, "http");

// 使用 POST 方式提交數據
HttpMethod method = getPostMethod();
client.executeMethod(method);

// 顯示返回的狀態
System.out.println(method.getStatusLine() + "\n");

// 顯示返回結果
String response = new String(method.getResponseBodyAsString().getBytes("UTF-8"));
System.out.println(response);

// 釋放連接
method.releaseConnection();
}

//
private static HttpMethod getGetMethod(){
return new GetMethod("/javaPost.php?sk=go&op=add");
}

//
private static HttpMethod getPostMethod(){
PostMethod post = new PostMethod("/javaPost.php");

post.setRequestBody(
new NameValuePair[] {
new NameValuePair("sk", "go"),
new NameValuePair("op", "add")
}
);

return post;
}

}