NSMutableUrlRequest 没有为 HTTP 请求发送正确的参数
NSMutableUrlRequest not sending proper parameters for HTTP request
我正在尝试发送 POST 请求,以便用户可以登录此应用。但是,当我尝试发送信息时,服务器 returns 一条错误消息说它没有收到登录信息。我之前使用过完全相同的代码,但 url 具有 HTTPS 而不是 HTTP。 swift 2 是否有处理 HTTP 请求的不同方法?
在我的 info.plist 文件中,我添加了以下内容:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key><true/>
</dict>
api 调用在除 iOS 之外的所有设备上都可以正常工作,代码在不同的 url 上也可以正常工作。如果 Swift 2 不再接受 HTTP 请求,是否有解决方法?
static let URL = "http://url.com:3000"
static let netSession = NSURLSession.sharedSession() // A shared NSURLSession that will be used to make API calls
// Call to login with the provided credentials. If login is successful the handler function will
// receive 'true', otherwise 'false'.
static func login(email : String, password : String, handler : (success: Bool, error: APIError?) -> ()) {
let request = NSMutableURLRequest(URL: NSURL(string: "\(URL)/users/login")!)
request.HTTPMethod = "POST"
let params = ["email":email,"password":password]
request.HTTPBody = try? NSJSONSerialization.dataWithJSONObject(params, options: [])
netSession.dataTaskWithRequest(request, completionHandler: {(data, response, error) in
if error != nil {
handler(success: false, error: APIErrorNetwork)
return
}
let jsonResponse = JSON(data: data!)
let httpResponse = response as! NSHTTPURLResponse
if httpResponse.statusCode == 200 {
// Handle the expected response
} else {
handler(success: false, error: APIError(json: jsonResponse))
print(httpResponse.statusCode);
}
}).resume()
}
您确定您的服务器接受 JSON
吗?它希望您 post 形成数据吗?
如果确实需要 JSON
,请尝试在您的请求中添加 Content-Type
header:
request.setValue("application/json", forHTTPHeaderField: "Accept");
有些服务器很挑剔。
我正在尝试发送 POST 请求,以便用户可以登录此应用。但是,当我尝试发送信息时,服务器 returns 一条错误消息说它没有收到登录信息。我之前使用过完全相同的代码,但 url 具有 HTTPS 而不是 HTTP。 swift 2 是否有处理 HTTP 请求的不同方法?
在我的 info.plist 文件中,我添加了以下内容:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key><true/>
</dict>
api 调用在除 iOS 之外的所有设备上都可以正常工作,代码在不同的 url 上也可以正常工作。如果 Swift 2 不再接受 HTTP 请求,是否有解决方法?
static let URL = "http://url.com:3000"
static let netSession = NSURLSession.sharedSession() // A shared NSURLSession that will be used to make API calls
// Call to login with the provided credentials. If login is successful the handler function will
// receive 'true', otherwise 'false'.
static func login(email : String, password : String, handler : (success: Bool, error: APIError?) -> ()) {
let request = NSMutableURLRequest(URL: NSURL(string: "\(URL)/users/login")!)
request.HTTPMethod = "POST"
let params = ["email":email,"password":password]
request.HTTPBody = try? NSJSONSerialization.dataWithJSONObject(params, options: [])
netSession.dataTaskWithRequest(request, completionHandler: {(data, response, error) in
if error != nil {
handler(success: false, error: APIErrorNetwork)
return
}
let jsonResponse = JSON(data: data!)
let httpResponse = response as! NSHTTPURLResponse
if httpResponse.statusCode == 200 {
// Handle the expected response
} else {
handler(success: false, error: APIError(json: jsonResponse))
print(httpResponse.statusCode);
}
}).resume()
}
您确定您的服务器接受 JSON
吗?它希望您 post 形成数据吗?
如果确实需要 JSON
,请尝试在您的请求中添加 Content-Type
header:
request.setValue("application/json", forHTTPHeaderField: "Accept");
有些服务器很挑剔。