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];
}
答案 0 :(得分:0)
检查http响应代码。 使用NSHTTPURLResponse类的 - (NSInteger)statusCode方法。是200还是其他?