当前位置: 首页 > 知识库问答 >
问题:

无法从Twilio请求中提取主体

姚自强
2023-03-14

当我向我的Twilio号码发送特定的消息时,我希望根据该消息采取行动。问题是,request.body()返回的是整个请求,而不是正文。

我在这里遵循了Twilio指南来创建webhook:html" target="_blank">https://www.Twilio.com/docs/sms/tutorials/how-to-receive-and-reply-java,并对其进行了修改,以查看请求主体,将其与我要查找的内容进行比较,然后根据需要做出响应。

问题正如所描述的那样,当我查看req.body()时,我得到的不仅仅是主体。

public static void main(String[] args) {

    int portNumber = 80;

    if(args.length > 0){
        portNumber = Integer.parseInt(args[0]);
    }

    port(portNumber);

    get("/", (req, res) -> "Hello Web");

    post("/sms", (req, res) -> {
        res.type("application/xml");
        System.out.println(req.body());

        String messageToSpend = req.body();

        if (req.body().equals("hello")){
            System.out.println("You said hello");
        }

        Body body = new Body
                .Builder(messageToSend)
                .build();
        Message sms = new Message
                .Builder()
                .body(body)
                .build();
        MessagingResponse twiml = new MessagingResponse
                .Builder()
                .message(sms)
                .build();
        return twiml.toXml();
    });
}

所以,Spark启动良好,然后我在Twilio中相应地设置URL,然后发送一条消息。收到消息,但是system.out.println(req.body());返回以下内容:

toCountry=GB&toState=&smsmessagesid=smc52bea78ca1df688d3d20cxxxxxxxx&nummedia=0&toCity=&fromzip=&smssid=smc52bea78ca1df688dd20cxxxxxxxx&fromstate=&smsstatus=received&fromccity=&body=hello&fromcountry=gb&to=%2b44xxxxxxx&tozip=&numsegments=1&&AccountSid=AC4394B4CFB2BDCEFB90C592xxxxxxxxxx&from=%2B44xxxxxxxxxx&apiversion=2010-04-01

而我本来希望(在本例中)hello

我很困惑,因为我在里面看到hello和适当的body标记,但它并不只是解析这个。

共有1个答案

华烈
2023-03-14

spark似乎将post表单数据解析为queryParams(这很奇怪,因为名字意味着GET)。所以

>

  • 不要调用req.body()以避免提前使用。
  • 改为调用req.queryparams(“body”)。

    public static void main(String[] args) {
    
        int portNumber = 80;
    
        if(args.length > 0){
            portNumber = Integer.parseInt(args[0]);
        }
    
        port(portNumber);
    
        get("/", (req, res) -> "Hello Web");
    
        post("/sms", (req, res) -> {
            res.type("application/xml");
            // Remove this: System.out.println(req.body());
    
            String messageToSpend = req.queryParams("Body");
    
            if ("hello".equals(messageToSpend)){
                System.out.println("You said hello");
            }
    
            Body body = new Body
                    .Builder(messageToSend)
                    .build();
            Message sms = new Message
                    .Builder()
                    .body(body)
                    .build();
            MessagingResponse twiml = new MessagingResponse
                    .Builder()
                    .message(sms)
                    .build();
            return twiml.toXml();
        });
    }
    

  •  类似资料:
    • 我有登录请求,在请求中我获得了JSESSIONID和XSRF-TOKEN作为Cookie数据,如下所示 如果需要,如何从响应中提取JSESSIONID,以便在注册Cookie中传递该变量 在此处输入图像描述

    • 我正在使用rest服务获取我的react原生android应用程序的响应。每当我使用localhost(我尝试使用127.0.0.1)和端口8080,但fetch给了我[TypeError:Network request failed]。在没有本地主机的情况下,获取请求工作正常。当与邮递员一起使用时,Rest服务可以正常工作。 我正在使用expo运行我的代码。以及使用Maven实现后端依赖性。 我

    • 问题内容: 我已经环顾了几天,无法解决这个问题。基本上,我正在将图像上传到服务器并获得ID作为回报,问题是我无法弄清楚如何提取此ID并将其更改为准备好保存到数据库的String。 程式码 这是我得到的输出 问题答案: 您正在接收JSON;您已经使用该方法将其解码为Python结构: 您可以将其视为任何其他Python列表;内容只是一个字典,因此另一个字典键可以获取值: 当您知道上传了多少张图像时,

    • 我正在使用curl发出一个POST请求,如下所示 但在servlet中,我无法获取任何数据。 有什么建议吗?还有一种在数据内部获取数据的更好方法,如?

    • 我想从JAVA中的PKCS10请求中提取subject alternative name(SAN)。 首先,我使用bouncycastle获得PKCS10CertificationRequest,如下所示: 但是,我不知道是否有一种方法可以从认证请求中提取SAN值。 需要帮忙吗?

    • 我一直在与服务器使用改型的响应进行斗争。 Logcat正在打印JSONObject,但它在