【问题标题】:Alamofire request to twilio swiftAlamofire 请求 twilio swift
【发布时间】:2017-12-05 15:35:40
【问题描述】:

我正在尝试从 twilio.com 获取短信,但没有得到回复。谁能说我做错了什么?

class SMSVerificationService: NSObject {

    static let sharedInstance = SMSVerificationService()


    func SMSRequest(countryCode:String, phoneNumber: String) {
        let accountSid = "ACc4d9785419f144412823ff20as34660c3d"
        let authToken = "4wqecx41f8999caa23735da214" // changed :)

        let url = URL(string: "https://\(accountSid):\(authToken)@api.twilio.com/2010-04-01/Accounts\(accountSid)/Messages")
        print("url", url!)

        let parameters = [
            "To": "+37378847884",
            "From" : "+14243960339",
            "Body": "Hi daddy"
        ]
        Alamofire.request(url!, method: .post, parameters: parameters,
                          encoding: JSONEncoding.default, headers: [:]).responseJSON { response in
                            let response = String(describing: response.result.value)
                            print(response)
        }
    }

}

【问题讨论】:

  • 检查response.result.failure怎么样?
  • responseSerializationFailed(Alamofire.AFError.ResponseSerializationFailureReason.jsonSerializationFailed(Error Domain=NSCocoaErrorDomain Code=3840 "Invalid value around character 0." UserInfo={NSDebugDescription=Invalid value around character 0.}))
  • 来吧,至少我们有更多的信息。你介意if let data = response.data, let utf8Text = String(data: data, encoding: .utf8) {print("Data: \(utf8Text)") // original server data as UTF8 string} 给我们打印的文本吗?
  • 数据:<?xml version='1.0' encoding='UTF-8'?> <TwilioResponse><RestException><Code>20404</Code><Message>The requested resource /2010-04-01/AccountsACc4d9785419f144412823ff2034660c3d/Messages was not found</Message><MoreInfo>https://www.twilio.com/docs/errors/20404</MoreInfo><Status>404</Status></RestException></TwilioResponse>
  • 所以:有一个错误(告诉 Twilio)并且响应是 XML,而不是 JSON,这解释了前面的 responseSerializationFailed() 消息。

标签: ios swift twilio alamofire


【解决方案1】:

这里是 Twilio 开发者宣传员。

我们不建议您直接从本机应用程序向 Twilio API 发出请求。为此,您需要在应用程序的某处存储或检索您的帐户 SID 和身份验证令牌。如果您这样做,则恶意攻击者可能会访问您的凭据并滥用您的 Twilio 帐户。

这实际上被称为Eavesdropper vulnerability and was written about earlier this year。

相反,我们建议您创建一个 Web 应用程序并从那里发送 API 请求。这里有一篇关于如何做到这一点的博客文章:https://www.twilio.com/blog/2016/11/how-to-send-an-sms-from-ios-in-swift.html

我注意到你的班级也被称为SMSVerificationService。如果您正在寻找建立电话验证,那么我建议您查看为您完成大量工作的Twilio Verify API。

【讨论】:

    猜你喜欢
    • 2017-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-18
    • 2020-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多