私は、SOAPサービスのメッセージフォーマットを使用してWebサービスメソッドを呼び出すiPhoneアプリケーションを作成しています。 テーブルビューには表示する前にそれらのデータが必要なので、同期プロセスが必要です。 私は[NSURLConnection sendSynchronousRequest:returningResponse:error:]を使用します。NSURLConnection同期問題
問題は、メソッド呼び出し後にエラーメッセージなしでプログラム全体が終了することです。 [NSURLConnection sendSynchronousRequest:returningResponse:error:]の直後にNSLogステートメントを置いても、 出力がないので、そのメソッド呼び出し中にプログラムが終了することが確実です。実際には の間にそのHTTP要求と応答のもの。
しかし、そのメソッド呼び出しの前にブレークポイントを設定し、デバッグモードでプログラムを実行すると、すべてが正常に実行され、プログラムは終了せず、結果も得られます。
何が起こっているのか把握できますか?おかげさまで
- (void) sendSyncHTTPRequest:(NSString *)request_data operation:(ServOperationSync *)serv_ops {
id<ServiceData> serv_data = serv_ops.dataDelegate;
NSURL *urlAddr = [NSURL URLWithString:[serv_data getServURL]];
urlRequest = [NSMutableURLRequest requestWithURL:urlAddr
cachePolicy:NSURLRequestReloadIgnoringLocalCacheData
timeoutInterval:90];
NSData *requestData = [request_data dataUsingEncoding:NSUTF8StringEncoding];
[urlRequest setValue:@"MobilePortal" forHTTPHeaderField:@"User-Agent"];
[urlRequest setValue:[serv_data getSoapAction] forHTTPHeaderField:@"SOAPAction"];
[urlRequest setValue:[NSString stringWithFormat:@"%u", [requestData length]] forHTTPHeaderField:@"Content-Length"];
[urlRequest setValue:urlAddr.host forHTTPHeaderField:@"Host"];
[urlRequest setHTTPMethod:@"POST"];
[urlRequest setHTTPBody:requestData];
NSLog(@"just before sending http request");
[serv_ops.responseData setData:[NSURLConnection sendSynchronousRequest:urlRequest returningResponse:&urlResponse error:&urlError]];
NSLog(@"after sending http request");
} urlResponseとurlErrorは、インスタンス変数として宣言されていること
注意。
さらに詳しい情報があります。 私は、プログラムを実行し、私はコンソールツールバーから "一時停止"を押して、 プログラムを再開すると、すべてのものが良いです、私は結果を得る。 私はプログラムを実行する場合、何もせずにそれを実行させると、プログラムはメッセージなしで終了します。 これは、プログラムが独自のプロセスやスレッド、実行ループなどで実行できないようです。 私はデバッグモードでプログラムを実行するか、または を一時停止しても問題ないと思うので、実際にプログラムプロセスを他のものに接続するか、 GDBでフックするようにしますか? すべての情報をいただければ幸いです。 – user556623
NSURLConnectionがあなたのクラッシュの原因であると確信していますか? –