json ベースの Web サービスへの http 呼び出しを行うコードがいくつかあります。それは正常に機能していますが、コードを独自のクラスに移動しようとしましたが、少しハングアップしました。メソッドを呼び出すと、メイン スレッドはメソッドからの応答を待たずに次のコマンドに進みます。
プログラムの主要部分のコードを次に示します。
[newcall run];
NSLog(@"%@",[newcall status]);
NSArray *resultarray= [newcall returndata];
for (NSString *element in resultarray) {
NSLog(@"%@",element);
}
私のヘッダー
#import "AFHTTPClient.h"
@interface jsoncall : AFHTTPClient
{
NSString* Date;
NSString* apps;
NSString* data1;
NSURL* url;
NSString* Path;
NSArray* returndata;
NSString* status;
}
-(void) setApp: (NSString *)input;
-(void) setData: (NSString *)input;
-(void) setURL: (NSString *)input;
-(void) setPath: (NSString *)input;
-(int) run;
-(NSArray *) returndata;
-(NSString *) status;
@end
私の実行方法
-(int) run
{
__block int success;
NSDictionary* jsonDictionary=[NSDictionary dictionaryWithObject: data1 forKey:@"data"];
NSString* jsonString = [jsonDictionary JSONRepresentation];
AFHTTPClient *httpClient=[[AFHTTPClient alloc] initWithBaseURL:url];
NSDictionary *params =[NSDictionary dictionaryWithObjectsAndKeys:
apps,@"app",
jsonString,@"smpdata",nil];
NSMutableURLRequest *request = [httpClient requestWithMethod:@"POST" path:Path parameters:params];
AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request
success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
NSArray *dataarray=[JSON valueForKey:@"Data"];
status= [NSString stringWithFormat:@"%@",[JSON valueForKeyPath:@"Status"]];
NSLog(@"%@",status);
returndata= dataarray;
success=1;
NSLog(@"Success: Made it here");
}
failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error,id JSON)
{
success=0;
NSLog(@"Error: Made it here");
}
];
[operation start];
[operation waitUntilFinished];
return success;
}