2013-10-25 5 views
1

Я пытаюсь обновить данные через NSUrlConnection, используя метод PUT. Для добавления данных я использую метод POST, он работает нормально, но в то же время PUT он не работает.NSUrlConnection не обрабатывает метод PUT

NSURL *url=[NSURL URLWithString:[NSString stringWithFormat:@"%@update/%@?userId=%@",xapp.urlString,[dict valueForKey:@"id"],[profileDict valueForKey:@"id"]] ]; 
     NSError *error; 
     NSData* jsonData = [NSJSONSerialization dataWithJSONObject:dict options:NSJSONWritingPrettyPrinted error:&error]; 

     NSMutableURLRequest *request=[NSMutableURLRequest requestWithURL:url]; 
     [request setHTTPMethod:@"PUT"]; 
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; 
    [request setHTTPBody:jsonData]; 
    updateHiveConnection=[NSURLConnection connectionWithRequest:request delegate:self]; 

Я посылаю JSON данных в этом апи { "ID": 3, "активный" ложь} после того, что я получаю ошибку

Error Domain=NSCocoaErrorDomain Code=3840 "The operation couldn’t be completed. (Cocoa error 3840.)" (No value.) UserInfo=0x1fb456f0 {NSDebugDescription=No value.} 

Любая помощь будет признателен спасибо

+0

Я думаю, проблема в webservice. Может быть, это не разрешает PUT, может быть, у него нет обработчика PUT для вашего запроса. –

+0

Нет На самом деле я зарегистрировался в DEV Http Положил работу нормально –

ответ

1

Так что мне кажется, что у вас на самом деле нет JSON.

Вы уверены, что это имеет значения в нем:

xapp.urlString, [Dict valueForKey: @ "ID"], [profileDict valueForKey: @ "ID"]]

Если вы не пройти option NSJSONReadingAllowFragments to [NSJSONSerialization JSONObjectWithData: options: error:] ответ с сервера должен быть действительным JSON с контейнером верхнего уровня, который представляет собой массив или словарь.

, например:

{ "response" : "Success" } 

P.S. Если вы хотите изменить словарь, вы также должны включить NSJSONReadingMutableContainers в свои параметры.

+0

Да Я получаю правомерность Json I тестировал с помощью метода POST, он отлично работает. –

+0

Я думаю, что это проблема с HTTP заголовками –

4

У меня была такая же проблема, и после некоторого поиска Google я узнал, что, добавив следующую строку кода в NSMutableURLRequest *req будет делать это:

[req setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"]; 

Нашел на Джеффа LaMarche блоге: http://iphonedevelopment.blogspot.ro/2008/06/http-put-and-nsmutableurlrequest.html

+1

Это помогло мне, я не смог получить параметры, чтобы пройти, но это сработало. Благодаря! –

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