2011-12-25 90 views
0

我想發送一個異步http請求到服務器(在我的情況下是django)。 出於某種原因,它調用didFailWithError方法 - 這意味着它不起作用。 這是我的代碼:iPhone - NSURL連接

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並顯示它。我曾與REST服務合作,將它們的錯誤消息作爲responseData中的JSON字典返回,所以我可以將其轉換並查看服務器在發生錯誤時如何響應,但這取決於您要連接的服務器。

2

如果你也想發佈一些參數傳遞給服務器,那麼你需要需要以下各項

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

這樣就可以根據需要發送儘可能多的參數。

+0

謝謝!這就是我一直在尋找的 – 2011-12-25 13:32:25