Rest API 响应与 Postman 响应不同
RestAPI response is not same as Postman Response
我在调用 RESTful API 时遇到了一个非常奇怪的问题。我有一个登录名 API,我在 Postman 中对其进行了测试,它运行良好。这是屏幕截图。
但是一旦我使用 Alamofire 调用它,我得到的响应为 "status :" 1
和 "message" : 'Incorrect Credentials'
这与我在邮递员中使用的电子邮件和密码相同,但我仍然收到此响应,即使我的电子邮件和密码是正确的。我已经在多个电子邮件和密码上对其进行了测试,并且对于每个用户它都会给我同样的错误。
这是我的登录函数..
public func login(email: String, password: String, success: @escaping (UserData) -> (), failure: errorClosure)
{
let parameters: Parameters = [
"email": "\(email)",
"password": "\(password)"
]
session.request(Config.loginURL, method: .post, parameters: parameters, encoding: JSONEncoding.default).responseJSON
{ response in
switch response.result
{
case .success(_):
let json = response.value
print("JSON: \(json ?? "errr")")
MappingHelper.ModelFromResponse(UserData.self, response: response, success: { (result) in
success(result)
}, failure: failure)
case .failure(let error):
failure?(error)
}
}
}
我就是这样称呼它的..
helper.login(email: email, password: password) { (UserData) in
print(UserData)
} failure: { (error) in
print(error)
}
调试中..
我使用 session.request
而不是 AF.request
的原因是因为当我使用 AF.request 时它会引发证书错误。
The certificate for this server is invalid. You might be connecting to a server that is pretending to be "DOMAIN NAME" which could put your confidential information at risk.
所以为了绕过这个错误,我在 SO 的一些回答的帮助下创建了一个会话。
private let session: Session = {
let manager = ServerTrustManager(evaluators: ["******.com": DisabledTrustEvaluator()])
let configuration = URLSessionConfiguration.af.default
return Session(configuration: configuration, serverTrustManager: manager)
}()
我认为错误是 JSONEncoding.default
,因为根据您的 Postman 屏幕截图,您不想发送 JSON 正文。您需要使用定义为 url-form-encoded here
我在调用 RESTful API 时遇到了一个非常奇怪的问题。我有一个登录名 API,我在 Postman 中对其进行了测试,它运行良好。这是屏幕截图。
但是一旦我使用 Alamofire 调用它,我得到的响应为 "status :" 1
和 "message" : 'Incorrect Credentials'
这与我在邮递员中使用的电子邮件和密码相同,但我仍然收到此响应,即使我的电子邮件和密码是正确的。我已经在多个电子邮件和密码上对其进行了测试,并且对于每个用户它都会给我同样的错误。
这是我的登录函数..
public func login(email: String, password: String, success: @escaping (UserData) -> (), failure: errorClosure)
{
let parameters: Parameters = [
"email": "\(email)",
"password": "\(password)"
]
session.request(Config.loginURL, method: .post, parameters: parameters, encoding: JSONEncoding.default).responseJSON
{ response in
switch response.result
{
case .success(_):
let json = response.value
print("JSON: \(json ?? "errr")")
MappingHelper.ModelFromResponse(UserData.self, response: response, success: { (result) in
success(result)
}, failure: failure)
case .failure(let error):
failure?(error)
}
}
}
我就是这样称呼它的..
helper.login(email: email, password: password) { (UserData) in
print(UserData)
} failure: { (error) in
print(error)
}
调试中..
我使用 session.request
而不是 AF.request
的原因是因为当我使用 AF.request 时它会引发证书错误。
The certificate for this server is invalid. You might be connecting to a server that is pretending to be "DOMAIN NAME" which could put your confidential information at risk.
所以为了绕过这个错误,我在 SO 的一些回答的帮助下创建了一个会话。
private let session: Session = {
let manager = ServerTrustManager(evaluators: ["******.com": DisabledTrustEvaluator()])
let configuration = URLSessionConfiguration.af.default
return Session(configuration: configuration, serverTrustManager: manager)
}()
我认为错误是 JSONEncoding.default
,因为根据您的 Postman 屏幕截图,您不想发送 JSON 正文。您需要使用定义为 url-form-encoded here