0

私はiOSプログラミングに慣れていないことから密集していると確信していますが、AFNetworkingに問題があります。具体的には、使っても何も起こりません。サーバーからの応答はありませんが、エラーも発生しません。すべてのプロパティがNULLになります。

これが私のリクエストです:

NSMutableDictionary *requestArray = [NSMutableDictionary new];
[requestArray setObject: @"getBio"
                 forKey: @"action"];
[requestArray setObject: @"1"
                 forKey: @"bioID"];

NSError * error = nil;

NSData *jsonData = [NSJSONSerialization dataWithJSONObject:requestArray options:0 error:&error];

NSString *myRequestString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];

NSMutableURLRequest *request = [ [ NSMutableURLRequest alloc ] initWithURL: [ NSURL URLWithString: @"http://localhost/LP/JSON/Secure/bio.php" ] ]; 

[ request setHTTPMethod: @"POST" ];
[ request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"content-type"];
[ request setHTTPBody: [myRequestString dataUsingEncoding:NSUTF8StringEncoding]];

リクエストをUIWebViewに渡すだけで、またはこれを使用すると、期待どおりの結果が得られるため、これは機能しているようです。

NSURLResponse *response;
NSError *err;
NSData *returnData = [ NSURLConnection sendSynchronousRequest: request returningResponse:&response error:&err];
NSString *content = [NSString stringWithUTF8String:[returnData bytes]];
NSLog(@"responseData: %@", content);

つまり、POSTは成功し、JSONが返されます。

しかし、これらはどれも何もしません(エラーも応答もありません):

AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
    NSLog(@"Data: %@ %@", [JSON valueForKeyPath:@"firstName"], [JSON valueForKeyPath:@"lastName"]);
} failure:nil];

また、骨の折れる作業でさえも機能しません。

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

明らかに、私はひどく間違ったことをしています。しかし、サイレント障害がこれを理解するのを難しくしています。

助けてくれてありがとう。

編集:

気にしないでください..私は密集しています。

NSOperationQueueを作成していませんでした。

NSOperationQueue *queue = [[NSOperationQueue alloc] init];
[queue addOperation:operation];

ただし、プロパティが設定されない理由はまだわかりません。しかし、少なくともデータはあるようです。

4

1 に答える 1

3

リクエスト操作オブジェクトを作成しても、リクエストが自動的に開始されるわけではありません。編集で指摘したように、それをキューに入れるかNSOperationQueue手動[operation start]で行うかはあなた次第です。

を使用してサーバーと通信することをお勧めしますAFHTTPClient。これは、渡されたパラメーターに基づいてクエリ文字列または HTTP 本文を正しく設定する組み込みメカニズムを提供するためです。サンプル コードの Gowalla API サンプル クライアントとメソッドを参照してください。AFHTTPClient -postPath:parameters:success:failure.

于 2012-01-16T06:34:17.913 に答える