RestKit PUT не работает
Я пытаюсь сделать довольно простой HTTP PUT с помощью RestKit. Я не хочу помещать весь объект, так как вызов API был разработан, чтобы принять один параметр запроса и просто обновить это поле. До сих пор я пробовал два подхода, оба безуспешные.
URL для публикации: https://myserver/api/users/{userId}
Параметр строки запроса: verificationCode=
Пример использования: PUT https://myserver/api/users/101?verificationCode=646133
Подход № 1. Поместите параметр запроса в объект RKParams и выполните вызов PUT с этими параметрами.
NSString *putUrl = [NSString stringWithFormat:@"/api/users/%i", [APIUserInfo sharedAPIUserInfo].apiUserIdx];
NSLog(@"the PUT url is %@", putUrl);
// Send a PUT to a remote resource. The dictionary will be transparently
// converted into a URL encoded representation and sent along as the request body
NSDictionary* paramsDict = [NSDictionary dictionaryWithObject:[_verificationCode text] forKey:@"verificationCode"];
// Convert the NS Dictionary into Params
RKParams *params = [RKParams paramsWithDictionary:paramsDict];
[[RKClient sharedClient] put:putUrl params:params delegate:self];
Подход № 2. Создайте весь URL и попробуйте PUT с параметрами, установленными на ноль.
NSString *putUrl = [NSString stringWithFormat:@"/api/users/%i?verificationCode=%@", [APIUserInfo sharedAPIUserInfo].apiUserIdx, [_verificationCode text]];
NSLog(@"the PUT url is %@", putUrl);
[[RKClient sharedClient] put:putUrl params:nil delegate:self];
Ни один из подходов не работает для меня. Первая не отвечает: "RestKit было предложено повторно передать новый поток тела для запроса. Возможна ошибка соединения или проблема аутентификации?" затем работает около 10 секунд и время ожидания. Второй подход терпит неудачу, говоря HTTP Status 405 - Метод не разрешен.
Может кто-нибудь указать, где я иду не так, или предоставить мне простой пример PUT с использованием RestKit? Большинство примеров, которые я нашел там, помещают весь объект, что я не хочу делать в этом случае.
ОБНОВИТЬ:
Подход № 2 сработал хорошо, как только я разобрался с некоторыми вещами на стороне сервера. Окончательное решение:
NSString *putUrl = [NSString stringWithFormat:@"/api/users/verify/%i?verificationCode=%@", [APIUserInfo sharedAPIUserInfo].apiUserIdx, [_verificationCode text]];
NSLog(@"the PUT url is %@", putUrl);
[[RKClient sharedClient] put:putUrl params:nil delegate:self];
1 ответ
Метод HTTP PUT отключен на вашем веб-сервере. Это по умолчанию на всех веб-серверах по соображениям безопасности.
HTTP Status 405 - Method Not Allowed.