2

初めての iOS アプリを作成しています。

バックエンド コードは完成しましたが、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];

しかし、私はまだ迷っています。

4

3 に答える 3

2

独自の API にログインしようとしているので、setAuthorization は必要ありません。これは基本的な HTTP 認証用です。代わりに、バックエンドが HTTP GET または HTTP POST を予期しているかどうかに応じて、 getPath:parameters:success:failureまたは postPath バージョンを使用します。

parameters 引数でユーザー ID / パスワードを渡します。parameterEncodingを正しい形式に設定する必要があります。おそらく、HTTP フォームの URL エンコーディングまたは JSON を使用しています。バックエンドが期待するものは何でも。

于 2013-02-16T20:26:18.843 に答える
0

この場合、承認ヘッダーを設定する必要はありません。これは、HTTP ユーザー エージェントがサーバーに要求を行うときにユーザー名とパスワードを提供する方法である「基本アクセス HTTP 認証」のためだからです。

独自の API を使用して安静なサーバーと対話したい場合は、AFHTTPClient をサブクラス化して、API、Web サービス、またはアプリケーションと対話することをお勧めします。- AFHTTPClient のサブクラス化に問題がある場合は、AFNetworking zip アーカイブの例を参照してください。

ユーザーログインでアプリを作成したいので、アプリはこれらの情報をサーバーに送信する必要があり、サーバーはログインが成功したかどうかを返す必要があります。これは、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

于 2013-02-16T21:17:28.537 に答える