AFNetworking和404

时间:2012-06-28 07:17:42

标签: ios afnetworking

我正在尝试使用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。

我做错了什么?

2 个答案:

答案 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]];