我正在尝试使用AFNetworking发布到网址,无论我做什么,我都会收到错误:
Error Code: -1011 - Expected status code in (200-299), got 404
我的代码如下:
NSString *baseurl = @"http://mysiteurl";
NSString *path = @"/user/register/";
AFHTTPClient *client = [[AFHTTPClient alloc] initWithBaseURL:[NSURL URLWithString:baseurl]];
[client registerHTTPOperationClass:[AFJSONRequestOperation class]];
//[client setAuthorizationHeaderWithUsername:@"myusername" password:@"mypassword"];
[client postPath:path parameters:[NSDictionary dictionaryWithObjectsAndKeys:_userName,@"user", _email, @"email",_password,@"password", nil] success:^(AFHTTPRequestOperation *operation, id JSON) {
//NSLog(@"sjson: %@", [JSON valueForKeyPath:@"entries"]);
NSLog(@"sjson: %@", JSON);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error Code: %i - %@",[error code], [error localizedDescription]);
}];
当我直接前往http://mysiteurl/user/register/
时,我能够看到JSON。
我做错了什么?
答案 0 :(得分:4)
当我直接前往
http://mysiteurl/user/register/
时,我能够看到JSON。
如果您是通过浏览器执行此操作,则表示您正在发出GET
请求,而在您的代码中,您正在发出POST
请求。
404不仅仅是可见地址,它还包括HTTP方法。您需要确保您的服务器在POST
处响应http://mysiteurl/user/register/
。根据您的框架(例如Rails),您可能必须添加[client setDefaultHeader:@"Accept" value:@"text/json"]
才能获得正确的路由。
答案 1 :(得分:0)
我通常使用[client getPath:参数:params success:]而不是Post但我想这对两种情况都有效,因为你的响应也是JSON格式
添加这两行
[client.parameterEncoding = AFJSONParameterEncoding;
[client setDefaultHeader:@"Accept" value:@"text/json"];
之前
[client registerHTTPOperationClass:[AFJSONRequestOperation class]];