Jodd HTTP的使用


摘自:https://blog.csdn.net/mbh12333/article/details/78330158

一個簡單的Get請求

HttpRequest httpRequest = HttpRequest.get("http://jodd.org"); HttpResponse response = httpRequest.send(); //更簡潔的一種寫法 HttpResponse response = HttpRequest.get("http://jodd.org").send(); System.out.println(response);

輸出結果如下:

//下面是響應頭信息 HTTP/1.1 200 OK Accept-Ranges: bytes Cache-Control: max-age=0, public Connection: close Content-Length: 15441 Content-Type: text/html; charset=utf-8 Date: Mon, 04 Jul 2016 14:26:08 GMT Expires: Mon, 04 Jul 2016 14:26:08 GMT Last-Modified: Thu, 24 Mar 2016 23:05:05 GMT Server: nginx/1.10.1 Vary: Accept-Encoding <!DOCTYPE html> <html> ...... </html>

//省略部分是訪問頁面的HTML頁面
較為復雜一點的get請求:

HttpRequest request = new HttpRequest(); request .method("GET")//get請求 .protocol("http")//協議使用http .host("jodd.org")//主機地址 .port(80)//端口,沒有寫默認是80 .path("/api/jsonws/user/get-user-by-id");//訪問路徑

HttpResponse對象中有下面三個方法:

body() - 返回ISO-8859-1編碼的response返回體(上面的訪問對應的是jodd的html源碼)
bodyText() - 返回與響應頭中相應編碼的response返回體
bodyBytes() - 返回返回體的字節碼
參數

//get訪問中直接在URL中傳遞參數 HttpResponse response = HttpRequest .get("http://srv:8080/api/jsonws/user/get-user-by-id?userId=10194") .send(); //調用方法的方式傳遞參數 HttpResponse response = HttpRequest .get("http://srv:8080/api/jsonws/user/get-user-by-id") .query("userId", "10194") .send(); //或者創建request對象后用以下map的方式傳遞參數 Map<String, Object[]> httpParams = request.query(); httpParams.put("userId", new String[] {"10194"});

基本的用戶認證請求

request.basicAuthentication("test", "test");//是不是很方便啊

POST請求

HttpResponse response = HttpRequest
    .post("http://srv:8080/api/jsonws/user/get-user-by-id") .form("userId", "10194")//這里與get的參數傳遞方式不同 .send();

上傳文件

HttpRequest httpRequest = HttpRequest
    .post("http://srv:8080/api/jsonws/dlapp/add-file-entry") .form( "repositoryId", "10178", "folderId", "11219", "sourceFileName", "a.zip", "mimeType", "application/zip", "title", "test", "description", "Upload test", "changeLog", "testing...", "file",new File("d:\\a.jpg.zip") ); HttpResponse httpResponse = httpRequest.send();

還可以設置回調方法監聽上傳的進度等:

HttpResponse response = HttpRequest
    .post("http://localhost:8081/hello") .form("file", file) .monitor(new HttpProgressListener() {//監聽上傳的進度 @Override public void transferred(long len) { System.out.println(len/size); } }) .send();

請求頭等信息的設置 HttpRequest中提供了header的多種不同方法簽名的傳遞header的方法,還提供headers使用map傳遞header的方法使用起來十分方便。 此為還提供contentType、cookie的等方法操作相關內容【具體可以看HttpRequest的API】
GZIP
有些網站使用了GZIP壓縮技術,這就要求獲得請求的時候使用GZIP解壓才能獲得數據,jodd提供了相關的支持而且使用十分簡單:

HttpResponse response = HttpRequest
    .get("http://www.liferay.com") .acceptEncoding("gzip") .send(); System.out.println(response.unzip());

body

HttpResponse response = HttpRequest
    .get("http://srv:8080/api/jsonws/invoke") .body("{'$user[userId, screenName] = /user/get-user-by-id' : {'userId':'10194'}}") .basicAuthentication("test", "test") .send();

編碼設置

HttpResponse response = HttpRequest
    .get("http://server/index.html") .queryEncoding("CP1251") .query("param", "value") .send();

Soket連接

HttpRequest request = HttpRequest.get()...;
request.open();
SocketHttpConnection httpConnection =
    (SocketHttpConnection) request.httpConnection();
Socket socket = httpConnection.getSocket();
socket.setSoTimeout(1000); ... HttpResponse response = request.send();

長連接

HttpRequest request = HttpRequest.get("http://jodd.org"); HttpResponse response = request.connectionKeepAlive(true).send(); // next request request = HttpRequest.get("http://jodd.org/jodd.css"); response = request.keepAlive(response, true).send(); ... // last request request = HttpRequest.get("http://jodd.org/jodd.png"); response = request.keepAlive(response, false).send(); // optionally //response.close();


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM