我是swift和iOS的新手,并尝试使用Alamofire和路由器,它们返回NSMutableURLRequest,但我的代码不起作用。
所以我刚做了一个NSURLRequest进行测试,并要求它但结果是一样的。
这是我的代码。我目前正在使用Alamofire和SwiftyJSON。
let params = ["Id": "1234567", "Token": "something"]
let url = NSURL(string: "myurl")
var request = NSMutableURLRequest(URL: url!)
request.HTTPMethod = Alamofire.Method.POST.rawValue
let encoding = Alamofire.ParameterEncoding.JSON
(request, _) = encoding.encode(request, parameters: params)
Alamofire.request(request)
.validate()
.responseJSON { response in
switch response.result {
case .Success:
if let value = response.result.value {
let json = JSON(value)
let token = json["token"].stringValue
let error = json["error"].stringValue
print("token : \(token), error : \(error)")
}
case .Failure(let error):
// TODO:
print(error)
}
}
上面的代码发送没有参数的请求 。我的代码有错误吗?
答案 0 :(得分:0)
我检查了你的代码,在执行编码功能之前你的request.HTTPBody是空的,但是在它有一些数据之后
Optional<NSData>
- Some:<7b22546f 6b656e22 3a22736f 6d657468 696e6722 2c224964 223a2231 32333435 3637227d>
当我在print(response.request?.HTTPBody)
块中调用Alamofire response
时,我将参数作为NSData获取,HTTPBody包含与发送请求之前相同的数据,因此它可以正常工作。
还尝试将响应从 responseJSON 更改为 responseString ,因为如果您的响应无法解析为JSON,则会出现失败。
如果您获得正确的数据,我认为您应该检查您的网址。
我使用
而不是你的解决方案 Alamofire.request(method, url, parameters: parameters, encoding: .JSON) .responseString{ response in}
相同但更短,一切都是参数。