2012-04-05 7 views
1

NSURL Delegierten didReceiveData Methode immer genannt wird, nicht genannt zu werden, aber didReceiveResponse und didFinishLoading wird immer genannt. Ich habe viele Online-Posts durchgesehen, konnte aber keine Ahnung bekommen, warum ich keine Daten erhalte. Kann mir jemand sagen, was ich im Code mache? Jede Hilfe wird geschätzt. Hier ist mein Code:didReceiveData nicht in Xcode

- (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

strage: Sie könnten einen leeren Körper zurück? also nur ein Header. möglich? –

+0

NSLog für didReceiveResonse ist soapMsg1: 0. Sie können auch auf Ihre Antwort klären? – vvg

Antwort

0

Überprüfen Sie den HTTP-Antwortcode. mit - (NSInteger) status Methode der NSHTTPURLResponse Klasse. Ist es 200 oder anderes?

+0

NSHTTPURLResponse * httpResponse = (NSHTTPURLResponse *) Antwort; int AntwortStausCode = [httpResponse statusCode]; NSLog (@ „Code:% d“, [httpresponse status], ich bin immer Statuscode als 400 – vvg

+0

Für eine erfolgreiche HTTP Antwort sollte Antwortcode sein 2xx 400 kann der Server bedeuten denkt, dass Ihre Anfrage ist nicht korrekt formatiert.. –

Verwandte Themen