0

こんにちは、接続クラスで問題が発生しています。さまざまなメソッドに同じ接続クラスを使用しています。どこでも正常に動作していますが、この特定の接続を作成するとエラーが発生します。つまり、..接続はエラーで失敗しました。

コード全体を投稿しています。助けてください。 私のURLを送信して接続するためのコード:-

 NSString *strURl=[NSString stringWithFormat:@"http://xxxyyy.com/API/index.php?action=listIt&login=%@&pwd=%@&name=%@&catID=%d&listID=&addr1=%@&addr2=%@&locName=&city=%@&state=%@&zip=&startDate=%@&startHours=%@&startMin=%@&startMeridiem=%@&endDate=%@&endHours=%@&endMin=%@&endMeridiem=%@&contactName=&contactPhone=&contactEmail=&contactWebsite=&cost=%d&description=%@",appDelegate.strUserName,appDelegate.strPassword,strTitle,self.subCat_ID,[txtAddress1.text urlEncodeUsingEncoding:NSUTF8StringEncoding],[txtAdress2.text urlEncodeUsingEncoding:NSUTF8StringEncoding],lblCity.text,lblState.text,strBeginDate,startHr,startMin,startMeridiem,strEndDate,strEndHr,strEndMin,strEndMeridiem,cost,[txtdDscription.text urlEncodeUsingEncoding:NSUTF8StringEncoding]];

            //strURl=[strURl urlEncodeUsingEncoding:NSUTF8StringEncoding];
           // NSString *strEncode=[strURl stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
           // strEncode=[strEncode stringByReplacingPercentEscapesUsingEncoding:NSASCIIStringEncoding];
            NSLog(@" strListItURl  =%@",strURl);
            ConnectionClass *connection=[[ConnectionClass alloc]init];
            [connection getResponseData:strURl];
            connection.delegate=self;
            [connection release];

NSLog(@" strListItURl =%@",strURl); これは、私が送信しているメソッドとパラメーターを含む URL です。 strListItURl http://xxxyyy.com/API/index.php?action=listIt&login=sawanth&pwd=sawanth&name=Hello One&catID=4&listID=&addr1=One%20tow&addr2=next%20one&locName=&city=アンカレッジ&state=アラスカ&zip=&startDate=11/8/ 2012&startHours=11&startMin=33&startMeridiem=AM&endDate=11/10/2012&endHours=11&endMin=33&endMeridiem=AM&contactName=&contactPhone=&contactEmail=&contactWebsite=&cost=3&description=%20Hello

注:-「strListItURl」をブラウザに直接貼り付けると、成功します。

接続を確立した後、接続クラスに参加しています

-(void)getResponseData:(NSString*)strURL
{

    NSLog(@"strURL =%@",strURL);
 //   NSString *str1 = [NSString stringWithFormat:@"%@",strURL];
    NSURL *url=[NSURL URLWithString:strURL]; 
    NSLog(@"url is =%@",strURL);   

    NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:30.0];
    //Initialize the connection for NSURL Connection
    theConnection = [[NSURLConnection alloc] initWithRequest:urlRequest delegate:self startImmediately:YES];
    if(theConnection)
    {
        //Initialize the data and retain the data
        receiveData = [[NSMutableData data] retain];
    }
    else {
        UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Warning" message:@"Please check internet connection" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
        [alert show];
        [alert release];

    }


}

ここで urlRequest を印刷するときに 、urlRequest の印刷の説明を見つけています: NSURLRequest (null)

最後に、コントロールは -(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error に移動します

私が間違っているところを教えてください:)

4

2 に答える 2

0

NSURLRequest を割り当てていません。しかし、nil ではなく null を出力しているのは奇妙です。

試す:

NSURLRequest *urlRequest = [[NSURLRequest alloc] requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:30.0];
于 2012-11-08T07:51:32.687 に答える
0

答えがわかりました。実際にstrURLを渡していたとき

NSString *strURl=[NSString stringWithFormat:@"http://xxxyyy.com/API/index.php?action=listIt&login=%@&pwd=%@&name=%@&catID=%d&listID=&addr1=%@&addr2=%@&locName=&city=%@&state=%@&zip=&startDate=%@&startHours=%@&startMin=%@&startMeridiem=%@&endDate=%@&endHours=%@&endMin=%@&endMeridiem=%@&contactName=&contactPhone=&contactEmail=&contactWebsite=&cost=%d&description=%@",appDelegate.strUserName,appDelegate.strPassword,strTitle,self.subCat_ID,[txtAddress1.text urlEncodeUsingEncoding:NSUTF8StringEncoding],[txtAdress2.text urlEncodeUsingEncoding:NSUTF8StringEncoding],lblCity.text,lblState.text,strBeginDate,startHr,startMin,startMeridiem,strEndDate,strEndHr,strEndMin,strEndMeridiem,cost,[txtdDscription.text urlEncodeUsingEncoding:NSUTF8StringEncoding]];

どこかから空白を取っているため、接続がエラーで失敗します。だから私は空白をトリミングしました

strURl = [strURl stringByReplacingOccurrencesOfString:@" " withString:@""];

そして、その開始は正常に機能します。

于 2012-11-10T06:05:04.790 に答える