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.
Другие вопросы по тегам