2015-11-15 99 views
0

我很新的Xcode,我試圖做一個POST請求。我在Google上搜索並找到了這個AFNetworking庫。我讀過一些文檔,但他們都說不同的事情。所以,現在我用自己的例子在POST請求,我的代碼如下所示:無法發送POST請求 - AFNetworking

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 
    NSDictionary *parameters = @{@"fName": @"firstname", @"lName": @"lastname"}; 
    [manager POST:@"http://00000.1111.ovh/api/Account/register" 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={com.alamofire.serialization.response.error.response= { URL: http://00000.1111.ovh/api/Account/register } { status code: 400, headers { "Content-Length" = 159; "Content-Type" = "application/json; charset=utf-8"; Date = "Sun, 15 Nov 2015 12:11:57 GMT"; Server = "Microsoft-IIS/8.5"; "X-Powered-By" = "ASP.NET"; } }, NSErrorFailingURLKey= http://00000.1111.ovh/api/Account/register , com.alamofire.serialization.response.error.data=<7b226d65 73736167 65223a22 54686520 72657175 65737420 69732069 6e76616c 69642e22 2c226d6f 64656c53 74617465 223a7b22 6c6f6769 6e2e7573 65726e61 6d65223a 5b225468 65205573 6572206e 616d6520 6669656c 64206973 20726571 75697265 642e225d 2c226c6f 67696e2e 70617373 776f7264 223a5b22 54686520 50617373 776f7264 20666965 6c642069 73207265 71756972 65642e22 5d7d7d>, NSLocalizedDescription=Request failed: bad request (400)}

希望有人能幫幫我!

+0

幫你一個忙,不要使用這個框架。改爲使用NSURLSession。 –

+1

克勞斯,我會毫不猶豫地建議不要使用這個框架。對於新用戶,正確編碼請求非常複雜(例如,我在這裏看到的99%的示例在線看不到百分比轉義請求)。當然,如果你不喜歡'AFHTTPRequestOperationManager'基於'NSURLConnection'(現在已被棄用)的事實,那麼使用非常相似的'AFHTTPSessionManager'(基於'NSURLSession')。 – Rob

+0

@克勞斯:雖然AFNetworking可能是一些(尤其是簡單)案件中的矯枉過正,但您仍然在給出「我不明白你的問題,但我願意回答它」的建議...... –

回答

2

如果你翻譯服務器的響應到東西,你可以更好地診斷這些問題,你可以分析/檢查:

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 
NSDictionary *parameters = @{@"fName": @"firstname", @"lName": @"lastname"}; 
[manager POST:@"http://00000.1111.ovh/api/Account/register" parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) { 
    NSLog(@"JSON = %@", responseObject); 
} failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
    NSLog(@"Error = %@", error); 
    if (operation.responseObject) { 
     NSLog(@"responseObject = %@", operation.responseObject); 
    } else { 
     NSLog(@"responseString = %@", operation.responseString); 
    } 
}]; 

如果你這樣做,你會看到它與迴應:

responseObject = { 
    message = "The request is invalid."; 
    modelState =  { 
     "login.password" =   (
      "The Password field is required." 
     ); 
     "login.username" =   (
      "The User name field is required." 
     ); 
    }; 
} 

顯然,該請求缺少必要的身份驗證詳細信息。

+0

謝謝!這非常有用! –

1

您的請求被正確發送,但服務器以HTTP代碼400響應。請檢查服務器的API文檔,瞭解請求的外觀。