【发布时间】:2019-08-08 11:24:38
【问题描述】:
注意:当您在我显示代码的位置看到
postmapping-url-here和MyOwnDefinedEntity时,这仅表示我试图不透露太多。
所以我使用Twilio 来发送和接收短信。我已经被这个问题困扰了大约 3 天,我似乎无法弄清楚如何解决它。
我使用Spring Boot 作为应用程序框架,Gradle 作为构建工具,VSCode 作为 IDE。我还使用Ngrok为localhost:8080创建了一个隧道来运行。
当我将它作为:
public static void main(String[] args) {
}
效果很好,我的Twilio 号码回复了一条短信。
但是,当我将它放在它自己的函数中,调用该函数并在整个应用程序中运行它时,我仍然会得到与 200 相同的状态代码,与它作为 main 方法工作时相同,但是我的Twilio 号码没有给我回短信。
我尝试过使用@PostMapping 和@GetMapping,因为我尝试过测试POST 和GET。
在来自Twilio 站点的发送和接收代码中,我尝试使用application/xml 和application/json 作为响应类型。
这是我目前的一些代码:
public static void TwilioRespondToSMS() {
get("/", (req, res) -> "");
post("/<postmapping-url-here>", (req, res) -> {
res.type("application/xml");
Body body = new Body
.Builder("This is a response to your text message")
.build();
Message sms = new Message
.Builder()
.body(body)
.build();
MessagingResponse twiml = new MessagingResponse
.Builder()
.message(sms)
.build();
return twiml.toXml();
});
}
这是main 代码:
@SpringBootApplication
public class ApplicationServerClass {
public static void main(String[] args) {
SpringApplication.run(ApplicationServerClass.class, args);
//TwilioRespondToSMS();
}
// Whatever other code ...
}
我也尝试将我的函数放在:
@Bean
public CommandLineRunner commandRunner() {
return (args) -> {
TwilioRespondToSMS();
// Whatever other code ...
}
}
这是@PostMapping函数:
@CrossOrigin(origins = "http://localhost:4200")
@PostMapping("/<postmapping-url-here>")
public ResponseEntity<MyOwnDefinedEntity> getMyOwnDefinedEntity(@PathVariable Long id) {
log.debug("REST request to get MyOwnDefinedEntity : {}", id);
Optional<MyOwnDefinedEntity> myOwnDefinedEntity = myOwnDefinedEntityRepository.findById(id);
//if(myOwnDefinedEntity.isPresent())
return new ResponseEntity<MyOwnDefinedEntity>(MyOwnDefinedEntity.get(), HttpStatus.OK);
}
Twilio 网站上的示例将其显示为 main 函数。与整个应用程序一起运行该示例时,我需要对其进行更改吗?
提前致谢。
【问题讨论】:
-
"当我运行它时:"这里是什么?你能发布你如何启动 SpringBoot 应用程序和你的控制器和 spring 配置。
-
好吧,当我使用
main运行它时,我只需按下Run按钮,我的Twilio号码就会成功回复我。但是,当我将其从main中取出时,将其放入自己的方法中,并在整个应用程序中运行它,通过执行./gradlew bootRun,我仍然得到200的状态代码,但随后Twilio 不再给我回短信。 -
恐怕很难帮助您,除非您在此处指定“it”和“that”功能的含义。最好的方法是你到目前为止尝试过的源代码,包括spring boot app starter、控制器以及你如何调用Twillio api。
-
我将编辑我的问题以显示我目前掌握的一些内容。
-
老实说,如果您愿意发布您的代码,我会提供帮助的。我不想做猜测工作并弄清楚自己。你说的是一个例子?哪一个?请更具建设性,遵循 StackOverflow 上的指南,了解如何提出明确的问题。
标签: java spring-boot twilio ngrok