Установка заголовков HTTP не по умолчанию с помощью AFHTTPClient

Я вижу, как установить заголовки по умолчанию с помощью AFHTTPClient, но я хотел бы устанавливать определенные заголовки только при выполнении запросов к определенным ресурсам. Есть ли способ сделать это, кроме создания собственного NSURLRequest (с правильными заголовками), создания операции и постановки этой операции в очередь на мой подкласс AFHTTPClient?


person kocodude    schedule 01.10.2012    source источник


Ответы (1)


Если ваш сетевой запрос будет значительно отличаться, может быть проще создать несколько подклассов AFHTTPClient для обработки разных случаев. Добавление ваших заголовков в - (id)initWithBaseURL:(NSURL *)url.

В противном случае всякий раз, когда вы создаете свой NSURLRequest с вашим подклассом AFHTTPClient, вы можете устанавливать заголовки несколькими различными методами:

[client setDefaultHeader:@"key" value:@"value"];
[client setAuthorizationHeaderWithUsername:@"username" password:@"password"];
[client setAuthorizationHeaderWithToken:@"token"];

Вы можете установить их перед созданием NSURLRequest примерно так:

NSURLRequest *request = [client requestWithMethod:@"someMethod" path:@"somePath" parameters:someParameters];

Тогда ваши заголовки должны быть только в этом запросе. Вы также можете очистить заголовок авторизации, используя - (void)clearAuthorizationHeader. Взяв немного из исходного кода AFNetworking, вы может удалить любые необходимые объекты из NSMutableDictionary, если они не были удалены иным образом.

person Keith Smiley    schedule 13.11.2012
comment
спасибо кит. Это метод, который я сейчас использую (несколько подклассов). похоже, вы подтверждаете, что это невозможно с одним экземпляром. - person kocodude; 13.11.2012
comment
Дело не в том, что разные запросы не могут использовать разные учетные данные (это просто для заголовков в NSURLRequest), но это определенно не рекомендуется. - person mattt; 31.03.2013