2016-09-29 8 views
0

Я пытаюсь ниже запроса в POSTMAN и через XcodeNSURLRequest: запрос PUT с JSON тела

Результат: Получение ответа 200 из запроса Почтальон и 1012 от Xcode

POSTMAN: Запрос

Тип запроса: PUT

URL: https://www.somesite.com/v1/favorites

заголовки:

Content-Type: "приложения/JSON" Авторизация: auth_token

{ 
"requestParameters": { 
    "_id": 3598, 
    "favorites": [{ 
     "_id": 1456, 
     "contactName": "aaa", 
     "contactUserName": "bbb" 
    }] 
} 
} 

== Objective-C ==

NSURL* url = [NSURL URLWithString:URL_STRING]; 
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0]; 

[request setHTTPMethod:@"PUT"]; 
    [request setValue:@"application/json" forHTTPHeaderField:@"Accept"]; 
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"]; 

NSString *jsonPostBody = [NSString stringWithFormat:@"{\"requestParameters\":{\"_id\":%@,\"favorites\": [{\"_id\": %@,\"contactName\": \"%@\",\"contactUserName\":\"%@\"}]}}",USERID_STRING,CONTACT_ID_STRING,CONTACT_NAME_STRING,CONTACT_USERNAME_STRING]; 

NSData *postData = [jsonPostBody dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:NO]; 
[request setHTTPBody:postData]; 
[request setValue:AUTH_TOKEN forHTTPHeaderField:@"Authorization"]; 

[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:handler]; 

Я пытался печатать jsonPostBody строку и проверить, что это действительный JSON. Может ли кто-нибудь помочь, указав, есть ли что-то очевидное, что мне не хватает?

ответ

0

-1012 код ошибки NSURLErrorUserCancelledAuthentication. Похоже, что сервер запрашивал аутентификацию (через ответ 401), но у вас не было обработчика делегата NSURLConnection для NSURLAuthenticationChallenge. Возможно, заголовок auth не совсем прав.

0

Нашел ответ самостоятельно. По-видимому, Content-Type недействителен и заменяет его [request setValue: @ "application/json" forHTTPHeaderField: @ "Content-Type"]; разрешили проблему.

Смежные вопросы