[英]Sending a post request with payload in java
我需要獲取文件的內容,這是我在 .network 選項卡下使用 chrome 檢查器找到的。 為此,我想向請求 URL 發送一個帶有所需負載的 post 請求。由於我使用 Selenium ChromeDriver 導航和登錄頁面,我首先嘗試使用 Selenium 提供的 HtmlRequest class。但我被卡住了幾秒鍾后,當我不知道如何傳遞有效負載或如何執行請求時,我最終會完成。 由於我無法找到這個 class 的正確解釋或示例,所以除了以下代碼之外,我沒有得到任何進一步的信息:
HttpRequest xhr = new HttpRequest(HttpMethod.POST, "https://flow.polar.com/api/training/history");
xhr.setContent(?);
接下來,我嘗試使用來自 java.net.http 的 HttpClient class。 我找到了以下示例並將 URL 更改為 chrome 檢查員向我顯示的請求 URL。
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder().uri(URI.create("https://flow.polar.com/api/training/history")).build();
client.sendAsync(request, HttpResponse.BodyHandlers.ofString())
.thenApply(HttpResponse::body)
.thenAccept(System.out::println)
.join();
這返回了一個 html 站點,它只是告訴我,找不到我輸入的帶有 URL 的站點。
然后我嘗試使用 Selenium 的 JavascriptExecutor 和以下代碼:
JavascriptExecutor js = (JavascriptExecutor) driver;
System.out.println(js.executeScript("var xhr = new XMLHttpRequest();\r\n" +
"xhr.open('POST', 'https://flow.polar.com/api/training/history', false);\r\n" +
"xhr.setRequestHeader('XHR', 'application/x-www-form-urlencoded');\r\n" +
"\r\n" +
"xhr.send('login=test&password=test');\r\n" +
"return xhr.response;", (Object) null));
如果能得到答案,那真是太好了,因為我花了太多時間試圖找出一種方法來做到這一點(對上面的代碼示例進行了多次迭代嘗試,但是它們產生了相同或更差的結果)。
錯誤說明了一切。 403
表示您無權POST
。 這意味着,您正試圖在沒有Authorization
的情況下創建資源。
您需要生成授權令牌並將其用於您的POST
請求。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.