1

NSURLデリゲートdidReceiveDataメソッドは呼び出されていませんが、didReceiveResponseとdidFinishLoadingが呼び出されています。私は多くのオンライン投稿を調べましたが、データを受け取らない理由についての手がかりを得ることができませんでした。誰かが私がコードで何をしているのか教えてもらえますか?どんな助けでも大歓迎です。これが私のコードです:

- (IBAction)buttonClicked:(id)sender {
NSString *soapMsg = 
[NSString stringWithFormat:
 @"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"
 "<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xlmns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">\n"
 "<soap:Body>\n"
 "<GetAllCarsJson xmlns=\"http://cscserver2.carrollu.edu/tshah2/\">\n"
 "</GetAllCarsJson>\n"
 "</soap:Body>\n"
 "</soap:Envelope>"]; 

//---print it to the Debugger Console for verification---
//NSLog(@"%@",soapMsg);
NSURL *url = [NSURL URLWithString:@"http://cscserver2.carrollu.edu/tshah2/CarService.asmx"];
NSMutableURLRequest *req = [NSMutableURLRequest requestWithURL:url];

//---set the headers---
NSString *msgLength = [NSString stringWithFormat:@"%d",[soapMsg length]];
[req addValue:@"text/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"];
[req addValue:@"http://cscserver2.carrollu.edu/tshah2/GetAllCarsJson" forHTTPHeaderField:@"SOAPAction"];
[req addValue:msgLength forHTTPHeaderField:@"Content-Length"];

//---set the HTTP method and body---
[req setHTTPMethod:@"POST"];
[req setHTTPBody: [soapMsg dataUsingEncoding:NSUTF8StringEncoding]];

//[activityIndicator startAnimating];
conn = [[NSURLConnection alloc] initWithRequest:req delegate:self];
[conn start];

NSLog(@"Connection = %@", conn);
if (conn) 
{
    //webData = [[NSMutableData data] ];
    webData = [[NSMutableData alloc] initWithCapacity:2048];
    //[[NSMutableData data] retainArguments];
}
}

- (void) connection:(NSURLConnection *) connection didReceiveResponse:(NSURLResponse *)response
{
    NSLog(@"soapMsg1: %d", [webData length]);
    //webData = [[NSMutableData alloc] initWith:
    [webData setLength:0];
}

- (void) connection:(NSURLConnection *) connection didReceiveData:(NSData *)data
{
    NSLog(@"DONE1111");
    [webData appendData:data];
    //NSLog(webData);

}

- (void) connection:(NSURLConnection *) connection didFailWithError:(NSError *)error
{
    NSLog(@"ConnectionFailed");
    //[webData release];
    //[connection release];
}

- (void) connectionDidFinishLoading:(NSURLConnection *) connection
{
    NSLog(@"DONE. Received Bytes: %d", [webData length]);
    NSString *theXML = [[NSString alloc] initWithBytes:[webData mutableBytes] length:             [webData length] encoding:NSUTF8StringEncoding];

    //shows the XML
    NSLog(theXML);
    //[theXML release];
    //[activityIndicator stopAnimating];
    //[connection release];
    connection = nil;
    webData =nil;

}

- (void) dealloc
{
    //[activityIndicator release];
    //[xmlParser release];
    //[soapResults release];
    //[super dealloc];
}
4

1 に答える 1

0

http 応答コードを確認します。- NSHTTPURLResponse クラスの (NSInteger)statusCode メソッドを使用します。200かそれ以外ですか?

于 2012-04-06T15:21:55.687 に答える