2015-07-25 5 views

ответ

-3

AFN может использовать большую часть вашего сетевого запроса. Надеюсь, это может вам помочь.

- (Void) setAuthorizationHeaderWithUsername: (NSString *) username password: (NSString *) password { 
    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 
    //a NSDictionary parameter 
    NSDictionary *parameters = @{@"name": username, @"pwd": password}; 
    [manager POST:@"http://example.com/resources.json" parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) { 
    //you can get JSON response in responseObject whether your request or wrong. 
    NSLog(@"JSON: %@", responseObject); 
} failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
    NSLog(@"Error: %@", error); 
}]; 
} 
+0

Будет ли это включать имя пользователя и пароль в виде обычного текста в URL-адресе? Определенно не хорошая практика – JordanMazurke

+0

Это NSDictionary. «name» & «pwd» - обязательная строка вашего сайта. имя пользователя, конечно, строка, вы устанавливаете свое зарегистрированное имя и пароль. Когда вы используете AFNetworking, никто не будет видеть имя пользователя и пароль в URL-адресе. – ronan

+0

Данные POST не отправляются по URL-адресу, что не имеет никакого отношения к AFNetworking. Но он посылается как обычный текст в теле, если вы не используете https. – zaph

0

Спасибо за помощь, но не удалось.

Вы возвращаете следующее сообщение об ошибке:

Request failed: unacceptable content-type: text/html 
NSLocalizedDescription = Request failed: unacceptable content-type: text/html. 

Я считаю, что сервер возвращается в text/html и код ожидает JSON.

1

Вы должны создать свой собственный экземпляр AFHTTPClient, когда вам нужно добавить заголовки или расширить его. Вы можете создать sharedInstance как singleton, а затем вызвать метод экземпляра для установки имени пользователя и пароля.

+ (AFHTTPClient *)sharedClient{ 
    static AFHTTPClient *_sharedClient = nil; 
    static dispatch_once_t onceToken; 
    dispatch_once(&onceToken, ^{ 
      _sharedClient = [[AFHTTPClient alloc] initWithBaseURL:[NSURL URLWithString:@"your_server_url"]]; 
     [_sharedClient setAuthorizationHeaderWithUsername:@"username" password:@"password"]; 
    }); 

    return _sharedClient; 
} 
Смежные вопросы