2012-04-05 8 views
1

NSURLデリゲートのdidReceiveDataメソッドが呼び出されず、didReceiveResponseとdidFinishLoadingが呼び出されています。私は多くのオンライン投稿を見てきましたが、なぜ私がデータを受け取っていないのかの手がかりを得ることはできません。誰かが私がコードで何をやっているのか教えてもらえますか?どんな助けもありがとうございます。ここに私のコードです:didReceiveDataが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:あなたは空のボディバックを取得する可能性がありますか?ヘッダーだけです。可能? –

+0

NSLog for didReceiveResonseはsoapMsg1:0です。また、あなたの返事を明確にすることはできますか? – vvg

答えて

0

http応答コードを確認してください。 NSHTTPURLResponseクラスの - (NSInteger)statusCodeメソッドを使用しています。それは200かそれともその他ですか?

+0

NSHTTPURLResponse * httpResponse =(NSHTTPURLResponse *)レスポンス。 int responseStausCode = [httpResponse statusCode]; NSLog(@ code:%d "、[httpResponse statusCode];ステータスコードは400です。 – vvg

+0

HTTP応答が成功するには、レスポンスコードが2xxでなければなりません。 –

関連する問題