通过 POST 方法的 Alamofire NSURLRequest 不起作用
Alamofire NSURLRequest via POST method doesn't work
我是 swift 和 iOS 的新手,并尝试为它们使用 Alamofire 和路由器,returns 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)
}
}
以上代码发送请求不带参数。我的代码有错误吗?
我检查了你的代码,在执行编码函数之前你的 request.HTTPBody 是空的,但在它有一些数据之后
Optional<NSData>
- Some:<7b22546f 6b656e22 3a22736f 6d657468 696e6722 2c224964 223a2231 32333435 3637227d>
当我在 Alamofire response
块中调用 print(response.request?.HTTPBody)
时,我将参数作为 NSData 获取,并且 HTTPBody 包含与发送请求之前相同的数据,因此它可以正常工作。
也尝试将响应从 responseJSON 更改为 responseString,因为如果您的响应无法解析为JSON 你失败了。
我认为如果您获得正确的数据,您应该检查您的 URL 站点。
我使用的不是你的解决方案
Alamofire.request(method, url, parameters: parameters, encoding: .JSON) .responseString{ response in}
相同但更短,一切都作为参数。
我是 swift 和 iOS 的新手,并尝试为它们使用 Alamofire 和路由器,returns 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)
}
}
以上代码发送请求不带参数。我的代码有错误吗?
我检查了你的代码,在执行编码函数之前你的 request.HTTPBody 是空的,但在它有一些数据之后
Optional<NSData>
- Some:<7b22546f 6b656e22 3a22736f 6d657468 696e6722 2c224964 223a2231 32333435 3637227d>
当我在 Alamofire response
块中调用 print(response.request?.HTTPBody)
时,我将参数作为 NSData 获取,并且 HTTPBody 包含与发送请求之前相同的数据,因此它可以正常工作。
也尝试将响应从 responseJSON 更改为 responseString,因为如果您的响应无法解析为JSON 你失败了。
我认为如果您获得正确的数据,您应该检查您的 URL 站点。
我使用的不是你的解决方案
Alamofire.request(method, url, parameters: parameters, encoding: .JSON) .responseString{ response in}
相同但更短,一切都作为参数。