在 swift2 中使用 Alamofire pod 时 POST 请求不起作用?
Posted
技术标签:
【中文标题】在 swift2 中使用 Alamofire pod 时 POST 请求不起作用?【英文标题】:POST request not working while using Alamofire pod in swift2? 【发布时间】:2015-12-29 09:44:20 【问题描述】:我正在 Swift 2
中做一个演示应用程序,它发出一个 HTTP
POST
请求。但是不明白为什么我的请求没有到达服务器。
我正在使用Alamofire 3.0
、Xcode 7.2
、swift 2.0
。
我基于这个link安装了Alamofire
pod:https://github.com/Alamofire/Alamofire#requirements
我的字符串是
str = "videostitle,videourl,imageurl"
我的代码是:
Alamofire.request(
.POST,
url,
parameters: Dictionary(),
encoding: .Custom(
(convertible, params) in
let mutableRequest = convertible.URLRequest.copy() as! NSMutableURLRequest
mutableRequest.setValue("application/graphql", forHTTPHeaderField: "Content-Type")
mutableRequest.HTTPBody = str.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)
return (mutableRequest, nil)
),
headers: nil
).responseJSON
(JSON) -> Void in
if JSON.result.value != nil
print(JSON.result.value)
self.delegate.successReponse(JSON.result.value!, withType: type)
else
当我打印JSON.result.value
时,它显示如下:
Optional(
errors = (
);
)
我不明白为什么它没有到达服务器。
【问题讨论】:
可能是服务器没有返回任何数据?您应该打印在控制台中发出的请求的 http 响应并检查 你说“它没有命中服务器”,你真的检查过服务器日志吗?您的网址正确吗? @jcaron 是的,我检查了服务器日志,而且我的网址在邮递员中也可以正常工作。 你的服务器网址是 https 吗? 【参考方案1】:你以前做过吗? info.plist 中的应用程序传输安全性。 https://github.com/Alamofire/Alamofire 其次,参数没有任何东西。应该将您的字符串更改为字典。
您可以使用 json 将字符串制作成字典。
let data = changestring.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true)
var dict = NSDictionary()
do
//dict = try NSJSONSerialization.JSONObjectWithData(data!, options: .MutableContainers) as! NSDictionary
dict = try NSJSONSerialization.JSONObjectWithData(data!, options: []) as! NSDictionary
catch
NSLog("this is dict \(dict)")
或者您可以将 NSDictionary 传递给参数。
Alamofire.request(.POST, "https://httpbin.org/post", parameters: parameters, encoding: .JSON)
如果您想使用其他方法进行 HTTP POST 和 GET,此链接适合您:https://github.com/RYANCOAL/swift-with-AFNetworking/blob/master/TestHTTPTests/TestHTTPTests.swift
手动验证 Alamofire.validate(contentType: ["application/json"]) 可以搜索 contentType 的值,我不知道它可以/不能设置 contentType。
【讨论】:
以上是关于在 swift2 中使用 Alamofire pod 时 POST 请求不起作用?的主要内容,如果未能解决你的问题,请参考以下文章
使用 Alamofire 3.0+ 在 swift 2.2 中使用 JSON 对象发送 POST 请求
Alamofire 自定义响应从 Alamofire v1.3 迁移到 3.0(和 Swift 2 语法)
Swift 2 - 使用 Alamofire 时函数不返回 Bool