我试图在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客户端时,同样的效果。我该如何解决该问题?
邮递员的帖子如下所示:
如何使用Jersey REST客户端进行相同的POST?
答案 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);