为了账号安全,请及时绑定邮箱和手机立即绑定

Twilio SMS api 不支持返回内容类型

Twilio SMS api 不支持返回内容类型

芜湖不芜 2023-05-17 15:58:49
目前我正在处理一个需要将 SMS 检索功能添加到系统中的项目。我已经使用 spingboot 来构建应用程序。所有的实现都完成了,我已经按照 twillio 上的所有必要配置从客户端检索短信。当我向 Twilio api 发送短信时,它会Unsupported Media Type在调试器中说明。我还向 api 发送了所需的内容类型。当我向 twilio 提供的号码发送短信时会发生这种情况。但是邮递员调用应用程序工作正常。package com.crustykrabs.application.service;import org.springframework.http.MediaType;import org.springframework.http.ResponseEntity;import org.springframework.web.bind.annotation.PostMapping;import org.springframework.web.bind.annotation.RequestBody;import org.springframework.web.bind.annotation.ResponseBody;import org.springframework.web.bind.annotation.RestController;import static spark.Spark.*;import com.twilio.twiml.MessagingResponse;import com.twilio.twiml.messaging.Body;import com.twilio.twiml.messaging.Message;@RestControllerpublic class TextMessageController {    @PostMapping(path = "/messages/textmessages/receive", consumes = "application/xml", produces = "application/xml")    public @ResponseBody ResponseEntity<String> receive() {            Body body = new Body                    .Builder("The Robots are coming! Head for the hills!")                    .build();            Message sms = new Message                    .Builder()                    .body(body)                    .build();            MessagingResponse twiml = new MessagingResponse                    .Builder()                    .message(sms)                    .build();            return ResponseEntity.ok().contentType(MediaType.APPLICATION_XML).body(twiml.toXml());    }}
查看完整描述

2 回答

?
智慧大石

TA贡献1946条经验 获得超3个赞

恕我直言,api 调用是最佳选择。RestTemplate请使用如下所示使用已发布的 API 进行实施。


public void sendOTP() {

    RestTemplate restTemplate = new RestTemplate();


    String message = "Your PIN for account verification is 123456";

    String user = "******405e4c****19d0******";

    String password = "******";

    String smsurl = "https://api.twilio.com/2010-04-01/Accounts/"+user+"/Messages.json";


    HttpHeaders headers = new HttpHeaders();

    headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);


    MultiValueMap<String, String> map = new LinkedMultiValueMap<>();

    map.add("From", "+1334384****");

    map.add("To", "+999999999");

    map.add("Body", message);


    HttpEntity<MultiValueMap<String, String>> httpEntity = new HttpEntity<>(map, headers);


    try {

        restTemplate.getInterceptors().add(new BasicAuthenticationInterceptor(user, password));

        Object response = restTemplate.postForObject(smsurl, httpEntity, Object.class);

        LOG.info("Sms Response: {}", gson.toJson(response));

    } catch(Exception e) {

        LOG.error(e.getMessage());

    }

}


查看完整回答
反对 回复 2023-05-17
?
青春有我

TA贡献1784条经验 获得超8个赞

您认为客户端没有指定内容类型。请补充content-type: application/xml。


如果你有 spring boot,你可以通过添加以下依赖项来修复它:


<dependency>

     <groupId>com.fasterxml.jackson.dataformat</groupId>

     <artifactId>jackson-dataformat-xml</artifactId>

     <version>2.9.8</version>

</dependency>


查看完整回答
反对 回复 2023-05-17
  • 2 回答
  • 0 关注
  • 132 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信