使用Jersey REST客户端进行Twilio出站呼叫

时间:2018-07-05 07:07:14

标签: twilio-api jersey-client

我试图在Java Spring MVC Web应用程序中使用Twilio进行出站呼叫。我已传递了进行出站呼叫所需的授权值和表单数据,但收到HTTP 400错误。 现在,当我尝试使用Postman REST客户端进行POST时,我可以使用Twilio进行出站呼叫。但是,当我使用程序来发起调用时,这是行不通的。我使用的帖子如下:

 ClientConfig config = new DefaultClientConfig();
                  Client client = Client.create(config);
                  client.addFilter(new HTTPBasicAuthFilter(ACCOUNT_SID, AUTH_TOKEN));
                  WebResource webResource = client.resource("https://api.twilio.com/2010-04-01/Accounts/ACfeea72833464fc8711f48a0fd/Calls.json");
                  ClientResponse responseMsg = webResource
                          .queryParam("From", from)
                            .queryParam("To", to)
                            .queryParam("Url", fileUrl)
                            .queryParam("Method", "GET")
                            .queryParam("StatusCallback", "https://www.myapp.com/events")
                            .queryParam("StatusCallbackMethod", "POST")
                            .post(ClientResponse.class);

我的响应中获得HTTP状态400。当我尝试使用邮递员REST客户端时,同样的效果。我该如何解决该问题?

邮递员的帖子如下所示:

Authorization username and password

Body

如何使用Jersey REST客户端进行相同的POST?

1 个答案:

答案 0 :(得分:0)

我注意到您使用的是Jersey Jersey 1.1x的较旧版本。这是我使用Jersey 1.19 Client实现它的方式。我没有使用queryParams,而是使用他们想要的表单数据构建了一个MultivaluedMap。

ClientConfig config = new DefaultClientConfig();
Client client = Client.create(config);
client.addFilter(new HTTPBasicAuthFilter(ACCOUNT_SID, AUTH_TOKEN));

WebResource webResource = client.resource("https://api.twilio.com/2010-04-01/Accounts/ACxxxxxxxxxxx/Calls.json");

MultivaluedMap<String, String> formData = new MultivaluedMapImpl();
formData.add("From", "+xxxxxxxxxx");
formData.add("To", "+xxxxxxxxxx");
formData.add("Body", "This is a test");

ClientResponse responseMsg = webResource.type(MediaType.APPLICATION_FORM_URLENCODED).post(ClientResponse.class, formData);