【发布时间】:2014-06-25 19:52:25
【问题描述】:
我正在尝试与 Swift iOS 应用程序中的 8tracks 开放 API 交谈。我需要使用 AFNetworking 向 http://8tracks.com/sessions.json 发出 POST 授权请求,但每次我收到 422 Unprocessable Entity 错误..
我在网上试过这个端点,它工作正常。这是我正在使用的代码(子类化AFHTTPSessionManager):
init() {
super.init()
self.responseSerializer = AFJSONResponseSerializer()
self.requestSerializer = AFJSONRequestSerializer()
self.requestSerializer.setValue(API_KEY, forHTTPHeaderField: "X-Api-Key")
self.requestSerializer.setValue("3", forHTTPHeaderField: "X-Api-Version")
}
func login(username: String, password: String, success: (NSURLSessionDataTask!, AnyObject!) -> Void, failure: ((NSURLSessionDataTask!, NSError!) -> Void)?) {
let credentials = ["username": username, "password": password] as Dictionary
self.POST(
API_URL.stringByAppendingString("/sessions.json"),
parameters: credentials,
success: success,
failure: failure
)
}
错误如下:
{ URL: http://8tracks.com/sessions.json } { status code: 422, headers {
"Accept-Ranges" = bytes;
"Access-Control-Allow-Origin" = "*";
Age = 0;
"Cache-Control" = "max-age=0, private, must-revalidate";
Connection = "keep-alive";
"Content-Length" = 125;
"Content-Type" = "application/json; charset=utf-8";
Date = "Wed, 25 Jun 2014 19:29:12 GMT";
Server = "nginx/1.4.3";
Status = "422 Unprocessable Entity";
Via = "1.1 varnish";
"X-Action" = "sessions/create";
"X-Backend" = rails;
"X-Cache" = MISS;
"X-Data-Request" = 1;
"X-Request-Id" = 3040c8bf79936b27075731f634bfd534;
"X-Requests-Left" = 99;
"X-Runtime" = "0.257240";
"X-UA-Compatible" = "IE=Edge,chrome=1";
} }, NSLocalizedDescription=Request failed: client error (422),
NSErrorFailingURLKey=http://8tracks.com/sessions.json}
【问题讨论】:
-
你提到“我在网上试过这个端点,它工作正常”。您可以 POST 或 GET 吗?
-
@YarGnawh 我用 json 数据和 Javascript 进行 POST 请求进行身份验证,效果很好
-
为什么要减去这个问题??
-
嗯。根据您的控制台日志,您的标题似乎没有被分配。我没有看到“X-Api-Key”或“X-Api-Version”。在发帖之前登录
self.requestSerializer.HTTPRequestHeaders,看看是否设置了标题。 -
@YarGnawh 这里一切都很好。
{ "Accept-Language" = "en;q=1"; "User-Agent" = "MY_APP/1 (iPhone Simulator; iOS 8.0; Scale/2.00)"; "X-Api-Key" = MY_KEY; "X-Api-Version" = 3; }
标签: objective-c json api swift afnetworking-2