我想創建一個http post請求而不使用任何庫,如java.net.HttpUrlConnection,java.net.URLConnection,URL Java中的.openConnection()等。但是互聯網上的每一個例子都使用了像HttpUrlConnection這樣的庫。任何人都可以請幫我創建一個Post請求登錄在Java網站?創建並使用http POST請求登錄到網站而不使用HttpUrlConnection庫或其他庫
回答
您將需要使用低級網絡直接與java.net.Socket
對象一起工作。也許最好的地方是Java sockets tutorial,然後檢查其中的示例回聲客戶端。這將告訴你如何連接到服務器,然後讀寫數據。
爲了構建所需的消息,您還需要了解HTTP POST。這個話題太詳細了,不能在這裏討論,所以你需要一些閱讀。
這裏是發送一個簡單的硬編碼的POST請求在服務器上本地主機上運行的程序:1234:
import java.io.*;
import java.net.*;
public class SendPost {
public static void main(String[] args) {
try {
String post_request = "POST /login HTTP/1.1\r\nHost: localhost:1234\r\nContent-Length: 41\r\nContent-Type: application/x-www-form-urlencoded\r\n\r\nusername=bob%40test.com&password=i+forget";
Socket s = new Socket("localhost", 1234);
DataOutputStream out = new DataOutputStream(s.getOutputStream());
out.writeBytes(post_request);
s.close();
} catch(Exception e) {
System.out.println(e);
}
}
}
這只是發送包含用戶名和使用相同格式的密碼POST請求如果您使用它來提交登錄表單,那麼您的瀏覽器會這樣。
的(大量簡化的)請求如下所示:
POST /login HTTP/1.1 Host: localhost:1234 Content-Length: 41 Content-Type: application/x-www-form-urlencoded username=bob%40test.com&password=i+forget
非常感謝你@mhawke。 –
這是一個非常好的例子,我想我可以在閱讀HTTP POST請求結構之後進行第一次嘗試。您能否讓我知道您的用戶名和密碼值是什麼?我看到nusername = bob%40test.com&password = i + forget「,但是你的用戶名是bob%40test.com還是隻是bob?不好意思,但是因爲我想在我的登錄頁面上進行測試,所以我需要知道什麼是在我的請求中使用用戶名和密碼的確切格式 –
用戶名是'bob @ test.com',密碼是'i forget',這說明在處理HTTP時它並不總是直截了當,每個值都是「 URL編碼「(AKA [百分比編碼](https://en.wikipedia.org/wiki/Percent-encoding)),以便非ASCII字符或其他可能具有特殊含義的字符被百分比編碼以避免誤解。在這種情況下,'@'已被'%40'替代,''空格替換爲'+'。 – mhawke
- 1. 使用python請求登錄到網站使用ajax json post
- 2. 請求並使用curl登錄網站
- 3. 使用請求登錄到網站
- 4. 使用請求登錄到網站?
- 5. 使用請求登錄到網站
- 6. 使用asp.net登錄到其他網站
- 7. 登錄其他網站使用JavaScript和jQuery,發送POST登錄
- 8. 使用HTTP POST登錄網站
- 9. 使用POST請求登錄到Django網站
- 10. 如何使用POST請求登錄到網站? (Swift,iOS)
- 11. 使用Python請求登錄網站
- 12. Python使用請求登錄網站
- 13. 使用python請求登錄網站
- 14. 如何將HTTP POST請求發送到其他網站?
- 15. PHP使用其他網站登錄?
- 16. 使用python請求登錄到網站:400 - 錯誤請求
- 17. 使用其他網站登錄到Joomla網站
- 18. 從另一個網站登錄到網站而不使用數據庫
- 19. 使用請求張貼登錄到本網站無法使用
- 20. 登錄與HTTP POST網站
- 21. 如何使用登錄Cookie登錄並執行POST請求
- 22. 如何使用Python腳本(請求庫)保持登錄到網站?
- 23. 如何取得網站上的成績,並使用POST請求執行登錄?
- 24. Python:嘗試使用請求登錄並執行HTTP請求
- 25. 登錄網站使用,而不是http.client
- 26. 用腳本使用python請求登錄到網站
- 27. 通過請求登錄到網站
- 28. 使用Phaser.io創建登錄屏幕:http請求?
- 29. 使用HttpURLConnection的Android POST請求
- 30. 使用HttpURLConnection提交json POST請求
什麼是與這個庫中的問題?我敢肯定,其他lib都會在內部封裝,因爲沒有人希望實現讀取和分析TCP/IP連接的字節流。你確定你真的想這麼做嗎? – Zilvinas
你好,歡迎來到Stackoverflow!您可能需要[參觀](https://stackoverflow.com/tour),[閱讀主題頁面](https://stackoverflow.com/help/on-topic)和[操作方法-ask頁面](https://stackoverflow.com/help/how-to-ask)。對於你的問題,一個簡單的谷歌搜索產生[這個結果](https://www.javatpoint.com/example-of-login-form-in-servlet) – Turing85
嗨@Zilvinas,這是一個項目,我們必須不' t使用HttpUrlConnection。我知道這是一個非常有用的圖書館。但是我們需要從頭開始創建我們的請求。 –