ios - Swift 将参数从 iPhone 传递到 Web API

标签 ios ruby-on-rails iphone swift

我有一个为我的 Rails 应用程序构建的 API,并且以下curl 可以工作:

curl -H "Content-Type: application/json; charset=UTF-8" \
-H "X-AccessToken: a602a4a8-1a77-4437-90bc-bb2023bbd2b5" \
http://localhost:3000/api/guesstimate \
-d '{"guesstimation": {"breed_id":"593","gender":"Male","age_years":"5"}}'

现在我想在我的 iPhone 应用程序中做同样的事情。到目前为止我有以下内容:

    let api_token = "a602a4a8-1a77-4437-90bc-bb2023bbd2b5"
    let urlPath = "http://localhost:3000/api/guesstimate"
    let url = NSURL(string: urlPath)

    //set up the request
    let request = NSMutableURLRequest(URL: url!)
    request.HTTPMethod = "POST"
    request.addValue("application/json", forHTTPHeaderField: "Accept")
    request.addValue("application/json; charset=UTF-8", forHTTPHeaderField: "Content-Type")
    request.addValue(api_token, forHTTPHeaderField: "X-AccessToken")

当我触发它时,我可以看到它命中了 API(在 Rails 控制台中),因此我正在进行通信,但它当然失败了,因为预期的参数不存在。

我不确定如何将参数(breed_id 等)编码到请求中。我尝试了一些方法,例如手动构建查询字符串,但它似乎非常脆弱。看起来我应该能够构建一些 json,然后只需使用一个衬垫将其添加到请求中,但通常的谷歌搜索并没有产生任何洞察力。

我还需要将参数嵌套在“guesstimate”中,就像在curl中一样,因为这是rails期望看到的。

任何帮助表示赞赏。

最佳答案

设置您的请求的正文 request.HTTPBody类似于 NSJSONSerialization.dataWithJSONObject(params)

关于ios - Swift 将参数从 iPhone 传递到 Web API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35089346/

相关文章:

iphone - 使用 PhoneGap、Appcelerator 等编写 iPhone 应用程序

iphone - 随时禁用推送通知声音

ios - Objective-c iOS 原型(prototype)单元重绘后恢复

ios - 时间分析器不显示功能

jquery - Ruby on Rails CSS 不会刷新/重新加载每个页面更改

ruby-on-rails - 从 Active Record 范围内访问类方法?

iphone - 处理已取消的 IAP 交易

ios - 与 NSDate 混淆

ios - 如何在 UIScrollView 中闪烁/闪烁滚动指示器?

mysql - "YAML syntax error occurred while parsing config/database.yml"Ruby on Rails