1

に問題がありNSURLConnectionます。

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

 [[NSURLConnection alloc] initWithRequest:request delegate:self];

しかし、「接続がタイムアウトしました」というエラーが表示されます。

Wi-Fiで繋げば問題なく使えます。私の電話には本格的な 3g ネットワークがあり、他のアプリやウェブサイトにもかなりの速度でアクセスできます。

リクエストがサーバーに送信されない理由がわかりません。

助けてください。

私はちょうど試しました:

 [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:YES ];

しかし、これも機能していません。

4

1 に答える 1

1

NSURLConnection を使用する特定の理由はありますか?

私は同様の問題を抱えていて、NSURLRequestを利用することができました。以下のコードを参照してください

-(NSString *)sendFile:(NSString*)url File:(NSString*)pFileName Handler:(NSObject*) sender{


    NSString *base64Data = [AppUtil compressAnd64EncodedString:pFileName];

    NSMutableString* requestURL = [[NSMutableString alloc] init];
    [requestURL appendString:url];

    NSMutableString* requestBody = [[NSMutableString alloc] init];
    [requestBody appendString:@"request="];
    [requestBody appendString:@""]; 

    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL: [NSURL URLWithString: [NSString stringWithString:requestURL]]];

    // assume we are going to have data of 100 kb 
    NSMutableString *pRequestBody = [[NSMutableString alloc]initWithCapacity:100*1024];

    // append 
    [pRequestBody appendString:SOAP_START_PACKET];

    [pRequestBody appendString:base64Data];

    [pRequestBody appendString:SOAP_END_PACKET];

    [request setHTTPMethod: @"POST"];
    [request setValue:@"application/soap+xml" forHTTPHeaderField:@"content-type"];
    [request setValue:@"utf-8" forHTTPHeaderField:@"charset"];

    NSData *requestData = [NSData dataWithBytes: [pRequestBody UTF8String] length: [pRequestBody length]];

    [request setHTTPBody: requestData];

    [request setTimeoutInterval:HTTP_TIME_OUT];

    NSError        *error = nil;
    NSURLResponse  *response = nil;

    debugLog<<" sending request "<<endl;

    NSData *pData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];

    if(pData){
        NSString *pRespString = [[[NSString alloc] initWithData:pData
                                                       encoding:NSUTF8StringEncoding] autorelease];

        debugLog<<"Response of length = "<<(int)[pRespString length]<<endl;

        // write file depending upon the response 
        NSString *pAppFileName = [self parseAndGenerateFile:pRespString];

        // done with the data 
        //  [pData release];

        if(!pAppFileName){

            [self setErrorString:@"Server Error"];

            return nil;

        }

        return pAppFileName;


    }else{
        debugLog<<" data is NULL"<<endl;

        NSString *pErrorMessage = [error localizedDescription];

        [self setErrorString:pErrorMessage];

        /* Must be the Network error, lets show it to the user */

    }
    return nil;




}
于 2012-05-29T07:44:29.373 に答える