[英]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.