簡體   English   中英

我正在發送此 http 請求,但它傳遞的是 % 而不是 @

[英]I'm sending this http request but its passing % instead of @

這是我發送補丁請求的行

**request.header("Content-Type", "application/x-www-form-urlencoded");
request.body(requestParams.toString());
Response response = request.patch("/home/taha%40gmail.com");**

它失敗是因為它在 email 之間傳遞了 %40 而不是 @。當我檢查日志時 (taha%40gmail.com)

在 java 中我該如何處理?

[1]
要在 URL 中正確編碼 email 地址,您可以使用java.net package 中的URLEncoder class。以下是如何執行此操作的示例:

import java.net.URLEncoder;



String email = "taha@gmail.com";
String encodedEmail = URLEncoder.encode(email, StandardCharsets.UTF_8);
Response response = request.patch("/home/" + encodedEmail);

這將正確編碼 email 地址,這樣 @ 符號就不會被解釋為 URL 參數分隔符。

請注意,URLEncoder.encode() 方法采用兩個 arguments:要編碼的字符串和要使用的字符編碼。 在此示例中,我們使用 UTF-8 編碼,這是一種廣泛使用的字符編碼,可以處理大多數字符。

[2]

如果以上不起作用:

看起來 email 地址被雙重編碼,這導致%符號出現在 email 地址中。

要解決此問題,您可以在發送請求之前解碼 email 地址。 以下是如何執行此操作的示例:

import java.net.URLDecoder;

String email = "taha@gmail.com";
String encodedEmail = URLEncoder.encode(email, StandardCharsets.UTF_8);
String decodedEmail = URLDecoder.decode(encodedEmail, StandardCharsets.UTF_8);
Response response = request.patch("/home/" + decodedEmail);

這將首先使用 URLEncoder class 對 email 地址進行編碼,然后使用 URLDecoder class 對其進行解碼。這應該刪除雙重編碼並允許 email 地址在 URL 中正確傳遞。

因為 Rest-Assured 開箱即用 URLencode,所以您需要明確停止它。

request.urlEncodingEnabled(false).patch("/home/taha%40gmail.com");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM