簡體   English   中英

Twilio “需要一個‘收件人’電話號碼。” Java HttpRequest

[英]Twilio "A 'To' phone number is required." Java HttpRequest

我正在嘗試將請求從 Java 發送到 Twilio SMS API。 我正在使用java.net.http包:

var url = UriBuilder.fromUri(
                "https://api.twilio.com/2010-04-01/Accounts/MyAccount/Messages.json").build();

var urlEncodedBody = URLEncoder.encode(String.format("To=%s&From=%s&Body=%s",
                                                         "+1123456789",
                                                         "+1223456789",
                                                         "Hello"),
                                           StandardCharsets.UTF_8);
var request = HttpRequest.newBuilder(url)
                             .headers("Authorization", "Basic " + base64,
                                      "Content-Type", "application/x-www-form-urlencoded")
                             .method("POST", HttpRequest.BodyPublishers.ofString(
                                     urlEncodedBody))
                             .build();

HttpClient httpClient = HttpClient.newBuilder().build();

try {
            var response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
} catch (IOException |
                InterruptedException e) {
            throw new RuntimeException(e);
}

我不斷收到錯誤響應:

{"code": 21604, "message": "A 'To' phone number is required.", "more_info": "https://www.twilio.com/docs/errors/21604", "status": 400}

知道我錯過了什么嗎?

我認為,當您對請求的正文進行編碼時,您也在對& s 和= s 進行編碼,因此它似乎只是一個字符串。

This answer on a different question建議使用Map並依次編碼每個值。 以此為基礎,您可以將字符串格式替換為:

Map<String, String> parameters = new HashMap<>();
parameters.put("To", "+1123456789");
parameters.put("From", "+1223456789");
parameters.put("Body", "Hello");

String urlEncodedBody = parameters.entrySet()
    .stream()
    .map(e -> e.getKey() + "=" + URLEncoder.encode(e.getValue(), StandardCharsets.UTF_8))
    .collect(Collectors.joining("&"));

暫無
暫無

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

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