2011-12-25 11 views
0

サーバー(私の場合はdjango)に非同期httpリクエストを送信しようとしています。何らかの理由で がdidFailWithErrorメソッドを呼び出す - それはうまくいきません。 これは私のコードです:iPhone - NSURL Connection

responseData = [NSMutableData data]; 
baseURL = [NSURL URLWithString:@"http://localhost:8000/messages/views/new_messages/"]; 
NSURLRequest *request = 
[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://localhost:8000/messages/views/new_messages/"]]; 
[[NSURLConnection alloc] initWithRequest:request delegate:self]; 

return TRUE; 
} 

これらは、接続されているメソッドです:

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse   *)response 
{ 
    [responseData setLength:0]; 
    NSLog(@"part 1 works"); 
} 

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data 
{ 
    [responseData appendData:data]; 
    NSLog(@"part 2 works"); 
} 

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error 
{ 
    NSLog(@"error!!!"); 
} 

- (void)connectionDidFinishLoading:(NSURLConnection *)connection 
{ 
    NSLog(@"finish"); 
} 
  1. それと間違って何ですか?
  2. 私はそれを修正した後、これを介してサーバーに投稿引数をどのように送ることができますか?

おかげ

答えて

1

することで、あなたのエラーの呼び出しを交換してみてください:

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error 
{ 
    NSLog(@"Error: %@\n%@", [error localizedDescription], [error userInfo]); 
} 

これはあなたにそれが渡された実際のNSErrorパラメータを使用しているため、何が悪かったのかについてのより良いロギングを与える

をあなたは可能性も、依存します。返されたオブジェクトの形式で、あなたのresponseDataを変換して表示してみてください。私はresponseDataのJSON辞書としてエラーメッセージを返すRESTサービスを扱っています。そのため、変換することができ、エラーの際にサーバが何を応答しているかを確認できますが、これは接続先のサーバによって異なります。

1

バック「didFailWithError」に来てコールは、リクエストが通過したが、あなたのサーバーがエラーを返し意味します。あなたの「要求」変数をNSLogしてブラウザで手動でヒットして、それが正しいかどうかを確認し、サーバーが何を応答しているかを確認します。 POSTリクエストのための

チェックこのリンクを:

http://www.makebetterthings.com/iphone/call-soap-web-service-from-iphone/

2

サーバーにもいくつかの引数を投稿したい場合、あなたはあなたができるこの方法でfollowing-

NSString *arguments = [[NSString alloc] initWithFormat:@"my arguments"]; 
[myRequest setHTTPMethod:@"POST"]; 
[myRequest setHTTPBody:[arguments dataUsingEncoding:NSUTF8StringEncoding]]; 

を必要とする必要があります必要なだけ多くのパラメータを送信します。

+0

ありがとうございます!それが私が探していたものです –