1

我正在尝试使用 AFNetworking 发布到 URL,无论我做什么,我都会不断收到错误消息:

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。

我究竟做错了什么?

4

2 回答 2

4

当我直接去时,http://mysiteurl/user/register/我可以看到 JSON。

如果您通过浏览器执行此操作,则您正在发出GET请求,而在您的代码中,您正在发出POST请求。

404 不仅仅是可见地址,它还包括 HTTP 方法。您需要确保您的服务器响应POSTat http://mysiteurl/user/register/。根据您的框架(例如 Rails),您可能需要添加[client setDefaultHeader:@"Accept" value:@"text/json"]才能获得正确的路线。

于 2012-07-03T19:01:56.793 回答
0

我通常使用 [client getPath: parameters:params success:] 而不是 Post 但我想这对这两种情况都有效,因为您的响应也是 JSON 格式

添加这两行

[client.parameterEncoding = AFJSONParameterEncoding;
[client setDefaultHeader:@"Accept" value:@"text/json"];

[client registerHTTPOperationClass:[AFJSONRequestOperation class]];
于 2012-07-02T05:29:24.547 回答