AFNetworking POST 请求失败代码=-1011 (400)
AFNetworking POST Request failed Code=-1011 (400)
我有一个网络服务,我可以通过 Postman 实用程序成功地对其进行 post 调用。在 Postman 上,设置是
我使用 AFNetworking。这是我的代码:
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
NSDictionary *parameters = @{@"offset": @"1", @"csrf-token": @"63b164ea557b4aba694f81520c71972fa43a9772"};
manager.requestSerializer = [AFJSONRequestSerializer serializer];
[manager POST:@"http://simple.com/" parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"JSON: %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@", error);
}];
但是我得到这个错误:
Error: Error Domain=com.alamofire.error.serialization.response Code=-1011 "Request failed: bad request (400)" UserInfo=0x7a6c5240 {com.alamofire.serialization.response.error.response=<NSHTTPURLResponse: 0x7a6b5360> { URL: http://simple.com/ } { status code: 400, headers {
"Cache-Control" = "no-store, no-cache, must-revalidate, post-check=0, pre-check=0, private, must-revalidate";
Connection = "keep-alive";
"Content-Encoding" = gzip;
"Content-Type" = "text/html; charset=utf-8";
Date = "Sun, 31 May 2015 15:40:26 GMT";
Expires = "Thu, 19 Nov 1981 08:52:00 GMT";
Pragma = "no-cache";
Server = "nginx/1.6.2";
"Set-Cookie" = "csrf-token=5589461e87b28a538953ccac4168bf1f98b20b1ds%3A40%3A%22f52bda5262260a3ee0a10efcf48a6a49c11e4103%22%3B; path=/, PHPSESSID=803db60816b9f8203fb8feca01c130b6; path=/";
"Transfer-Encoding" = Identity;
Vary = "Accept-Encoding,User-Agent";
"X-Powered-By" = "PHP/5.5.17";
这没有 AFNetworking:
NSString *post = @"offset=1&csrf-token=63b164ea557b4aba694f81520c71972fa43a9772";
NSData *postData = [post dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];
NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:[NSURL URLWithString:@"http://simple.com/"]];
[request setHTTPMethod:@"POST"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/x-www-form-urlencoded; charset=UTF-8" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:postData];
NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
NSHTTPURLResponse *response = nil;
NSError *error = nil;
NSData *respData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
NSLog(@"~~~~~ Status code: %d", [response statusCode]);
又是一个错误:400
请帮忙解决问题
我解决了他的问题。
服务器使用特定 CSRF 令牌 保持会话这一事实。我的错误是我在浏览器和移动设备中使用了相同的令牌。因此,服务器并没有给出错误 POST 请求的详细信息。
我的解决方案: 我首先获得服务器 CSRF 令牌,然后进一步 POST
查询我使用结果令牌。作为对 POST 请求的响应,我得到了状态 200 和我需要的数据。
True AFNetworking
我在这个问题上并没有真正的帮助,所以我不得不使用标准NSURLConnection
(我把代码放在有问题的地方)。说不定以后真的会有人派上用场呢!
感谢大家!祝大家好运!
我有一个网络服务,我可以通过 Postman 实用程序成功地对其进行 post 调用。在 Postman 上,设置是
我使用 AFNetworking。这是我的代码:
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
NSDictionary *parameters = @{@"offset": @"1", @"csrf-token": @"63b164ea557b4aba694f81520c71972fa43a9772"};
manager.requestSerializer = [AFJSONRequestSerializer serializer];
[manager POST:@"http://simple.com/" parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"JSON: %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@", error);
}];
但是我得到这个错误:
Error: Error Domain=com.alamofire.error.serialization.response Code=-1011 "Request failed: bad request (400)" UserInfo=0x7a6c5240 {com.alamofire.serialization.response.error.response=<NSHTTPURLResponse: 0x7a6b5360> { URL: http://simple.com/ } { status code: 400, headers {
"Cache-Control" = "no-store, no-cache, must-revalidate, post-check=0, pre-check=0, private, must-revalidate";
Connection = "keep-alive";
"Content-Encoding" = gzip;
"Content-Type" = "text/html; charset=utf-8";
Date = "Sun, 31 May 2015 15:40:26 GMT";
Expires = "Thu, 19 Nov 1981 08:52:00 GMT";
Pragma = "no-cache";
Server = "nginx/1.6.2";
"Set-Cookie" = "csrf-token=5589461e87b28a538953ccac4168bf1f98b20b1ds%3A40%3A%22f52bda5262260a3ee0a10efcf48a6a49c11e4103%22%3B; path=/, PHPSESSID=803db60816b9f8203fb8feca01c130b6; path=/";
"Transfer-Encoding" = Identity;
Vary = "Accept-Encoding,User-Agent";
"X-Powered-By" = "PHP/5.5.17";
这没有 AFNetworking:
NSString *post = @"offset=1&csrf-token=63b164ea557b4aba694f81520c71972fa43a9772";
NSData *postData = [post dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];
NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:[NSURL URLWithString:@"http://simple.com/"]];
[request setHTTPMethod:@"POST"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/x-www-form-urlencoded; charset=UTF-8" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:postData];
NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
NSHTTPURLResponse *response = nil;
NSError *error = nil;
NSData *respData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
NSLog(@"~~~~~ Status code: %d", [response statusCode]);
又是一个错误:400
请帮忙解决问题
我解决了他的问题。
服务器使用特定 CSRF 令牌 保持会话这一事实。我的错误是我在浏览器和移动设备中使用了相同的令牌。因此,服务器并没有给出错误 POST 请求的详细信息。
我的解决方案: 我首先获得服务器 CSRF 令牌,然后进一步 POST
查询我使用结果令牌。作为对 POST 请求的响应,我得到了状态 200 和我需要的数据。
True AFNetworking
我在这个问题上并没有真正的帮助,所以我不得不使用标准NSURLConnection
(我把代码放在有问题的地方)。说不定以后真的会有人派上用场呢!
感谢大家!祝大家好运!