iPhone - NSURL соединение - PullRequest
       12

iPhone - NSURL соединение

0 голосов
/ 25 декабря 2011

Я пытаюсь отправить асинхронный http-запрос на сервер (в моем случае django). по какой-то причине он вызывает метод didFailWithError - это означает, что он не работает. это мой код:

    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. после того, как я исправлю это - как я могу послать почтовые аргументы на сервер через это?

спасибо

Ответы [ 3 ]

2 голосов
/ 25 декабря 2011

Если вы хотите опубликовать некоторые аргументы и на сервере, вам нужно выполнить следующее:

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

Таким образом, вы можете отправить столько параметров, сколько хотите.

1 голос
/ 25 декабря 2011

Попробуйте заменить сообщение об ошибке на:

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

Это даст вам лучшую запись о том, что пошло не так, потому что он использует фактический параметр NSError, который передается.

Вы также можете, в зависимости от формата возвращаемого объекта, попытаться преобразовать ваши responseData и отобразить их. Я работал со службами REST, которые возвращают свои сообщения об ошибках в виде словаря JSON в responseData, поэтому я могу преобразовать его и посмотреть, что сервер отвечает в случае ошибки, но это зависит от сервера, к которому вы подключаетесь.

1 голос
/ 25 декабря 2011

Обратный вызов, поступивший к didFailWithError, означает, что запрос выполнен, но ваш сервер возвратил ошибку.NSLog вашей переменной 'request' и вручную нажмите ее в браузере, чтобы увидеть, если она верна, и посмотреть, что ваш сервер отвечает.

Проверьте эту ссылку для отправки запросов:

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

...