Afnetworkingは静かに何もしません
-
28-10-2019 - |
質問
私は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);
言い換えれば、投稿は成功し、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];
ただし、なぜプロパティが設定されていないのかはまだ不明です。しかし、少なくともデータを持っているようです。
解決
リクエスト操作オブジェクトを作成しても、リクエストが自動的にキックオフされません。編集で指摘したように、どちらかを NSOperationQueue
またはします [operation start]
手動で。
使用してサーバーと通信することをお勧めします AFHTTPClient
, 、それはあなたが渡すパラメーターに基づいてクエリ文字列またはHTTP本文のいずれかを正しく設定するための組み込みメカニズムを提供するので。 AFHTTPClient -postPath:parameters:success:failure
.
所属していません StackOverflow