1

メインの質問を別のチケットにして、各質問を分けるコメントをもらいました。

SDK のコードを記述しようとしています。API 呼び出しを行う必要があります。

AFNetworking 2.0 を使用して POST リクエストをサーバーに送信しています。

NSDictionary * params = [self formDictionaryFromCard: card];

NSMutableURLRequest *request = [[AFHTTPRequestSerializer serializer] requestWithMethod:@"POST" URLString: [self apiUrl] parameters: params];

[request addValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request addValue:@"Firefox" forHTTPHeaderField:@"User-Agent"];


AFHTTPRequestOperation *op = [[AFHTTPRequestOperation alloc] initWithRequest:request];
op.responseSerializer = [AFJSONResponseSerializer serializer];

[op setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {


    successBlock(responseObject);


} failure:^(AFHTTPRequestOperation *operation, NSError *error) {


    errorBlock(error);

}];

[[NSOperationQueue mainQueue] addOperation:op];

これは AFNetworking を使用して SDK の API 呼び出しを行う正しい方法ですか? https のサポートを提供するにはどうすればよいですか?

4

1 に答える 1

3

これは、AFNetworking を使用して SDK の API 呼び出しを行う正しい方法ですか?

コードはそのまま機能します。それを変えるために私がするいくつかの提案があります。

メインキュー

CocoaDocs のサンプル コードでは使用されていることが示さmainQueueれていますが、 以外の別の NSOperationQueue を使用する場合は検討してくださいmainQueue。考えられる理由は次のとおりです。

  • 後で操作の 1 つを調べて見つける必要がある場合 (たとえば、アップロードをキャンセルまたは一時停止する場合)。
  • 他の目的で使用mainQueueし、システムが次に開始する操作を確認するときに、それらの操作の優先度をネットワーク操作の優先度と比較したくない場合
  • 一度に複数のネットワーク リクエストを実行する場合 (たとえば、写真のダウンロードとメッセージの投稿を同時に実行できるようにする場合)。

AFNetworking の組み込み操作キューを使用できます (AFHTTPRequestOperationManager で)。

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager.operationQueue addOperation:op];

独自のものを使用することもできます。

呼び出す前にブロックをチェックする

ブロックを呼び出してクラッシュを無効にする前に、ブロックの存在を確認することをお勧めします。

if (successBlock) {
    successBlock(responseObject);
}

冗長なコードを避ける

すべてまたはほとんどの操作でヘッダーに対するこれらのカスタマイズが必要な場合は、AFHTTPRequestOperationManager をサブクラス化し、オーバーライドHTTPRequestOperationWithRequest: success: failure:してそこにヘッダーを追加する方がおそらく簡単です。次に、AFHTTPRequestOperationManager の簡易メソッド (POSTおよびで始まるメソッド) を使用できますGET

AFHTTPRequestOperationManager のドキュメントを見てください。

https のサポートを提供するにはどうすればよいですか?

ほとんどhttpsの場合、URL に含めるだけです (あなたの場合は に[self apiUrl])。無効な証明書を許可する、または特定の証明書のみを受け入れるなど、特定の用途については、AFSecurityPolicyクラスを調べる必要があります。

于 2013-10-03T22:27:16.993 に答える