2013-02-16 3 views
2

Я строю свое первое приложение для iOS.Вход пользователя с AFNetworking

У меня есть код бэкэнд, но я борюсь с частью Objective-C.

У меня есть страница регистрации/входа.

Но я не знаю, как отправить эти данные на моем сервере с помощью Objective C.

Я прочитал, что AFNetworking хорошо, но мне было интересно, как я мог бы использовать его для входа пользователя в систему.

Я загрузил и добавил AFNetworking в свой проект XCode и настроил заголовки.

AFHTTPClient *client = [AFHTTPClient clientWithBaseURL:[NSURL URLWithString:@"http://examplewebsite.com]]; 

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

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

AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request]; 

но я все еще потерян.

+1

Вы пытаетесь выполнить http auth или пытаетесь войти в свой собственный априот? –

+0

Я пытаюсь войти в свой собственный API – JoseSwagKid

+0

Я действительно новичок в этом - раньше я сделал одно веб-приложение. Я пытаюсь использовать мой внутренний код для создания пользовательского входа на iPhone. – JoseSwagKid

ответ

2

Поскольку вы пытаетесь войти в свой собственный API, вам не нужны вещи setAuthorization. Это для базового HTTP-аутентификации. Вместо этого вы хотите использовать getPath:parameters:success:failure или версию postPath, в зависимости от того, ожидает ли ваш сервер HTTP GET или HTTP POST.

Передайте свой идентификатор пользователя/пароль в аргументе параметров. Вы должны установить parameterEncoding как правильный формат. Вероятно, вы используете кодировку url HTTP Forms или JSON. Независимо от того, что ожидает ваш сервер.

+0

Можете ли вы предоставить нам ссылку, где описано, как должно выглядеть имя пользователя и пароль при отправке их в параметры объекта getPath: параметры: success: метод отказа вызов? Заранее спасибо. – uerceg

0

Вы не хотите устанавливать заголовки авторизации в этом случае, поскольку это для «базовый доступ HTTP-аутентификация», который является способом для пользовательского агента HTTP предоставлять имя пользователя и пароль при создании запрос на сервер.

Вы хотите использовать свой собственный API и взаимодействовать с успокоительным сервером, поэтому я рекомендовал бы, что вы subclass AFHTTPClient -> interact with an API, Web Service, or Application. - Посмотрите на примерах в архиве AFNetworking почтового индекса, если у вас есть трудности в подклассах AFHTTPClient.

Поскольку вы хотите создать приложение с именем пользователя, приложение должно отправить эту информацию на ваш сервер, и сервер должен вернуться, если логин был успешным или нет. Это можно сделать так: HTTP POST.

- (void)login { 

    // Login information from UITextFields 
    id params = @{ 
     @"username": self.usernameField.text, 
     @"password": self.passwordField.text 
    }; 

    //Call the AFHTTP subclass client, with post block. postPath = the path of the url, where the parameters should be posted. 
    [[theAuthAPIClient sharedClient] postPath:@"/login" 
           parameters:params 
            success:^(AFHTTPRequestOperation *operation, id responseObject) { 

             //handle succesful response from server. 

            } failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
             // handle error - login failed 
             } 
            }]; 

} 

Вам необходимо передать параметры в правильном формате, в зависимости от того, какой формат ожидает ваш сервер. Это можно сделать, установив правильную кодировку в вашем AFHTTPClient подкласса ->ParameterEncoding

+0

Не могли бы вы добавить больше деталей/контекста к этому? Это не работает для меня.Похоже, я не понимаю аспекта sharedClient. У меня также есть два набора NSLogs, один для Succes, один для Error, но не вызванный. Спасибо. –

+0

Да, но можете ли вы быть более конкретным?, Это только sharedClient, который не работает/вы не понимаете или это код, который я предоставил? – 7c9d6b001a87e497d6b96fbd4c6fdf

+0

Сервер возвращает приложение/json Однако, когда я использовал это, он все равно терпит неудачу. – JoseSwagKid

0

Так как я приехал сюда в поисках рабочего раствора для AFNetworking 2,0, не зная, что AFHTTPClient был удален из рамки, я опубликуйте новый способ установить это соединение здесь:

AFHTTPRequestOperationManager *manager = [[AFHTTPRequestOperationManager alloc] initWithBaseURL:[NSURL URLWithString:@"http://examplewebsite.com"]]; 
[manager setRequestSerializer:[AFHTTPRequestSerializer serializer]]; 
[manager.requestSerializer setAuthorizationHeaderFieldWithUsername:@"userName" password:@"password"]; 
Смежные вопросы