HTTP POST-запрос не работает, методы делегата не вызываются - PullRequest
0 голосов
/ 17 мая 2010

Мне интересно, почему этот запрос HTTP POST не работает в моем приложении для iPhone.

Я точно знаю, что URL верен и что переменные, которые я отправляю, верны, но по какой-то причине запрос не получен страницей .aspx.

EDIT:

Я реорганизовал код в его собственный класс с его собственными методами делегатов. Но методы делегата не вызываются.

Класс называется так:

URLCallClass *reporter=[[[URLCallClass alloc] init]autorelease];
    [reporter sendoview:@"http://mysite/page.aspx" params:httpBodyString];

и это сам фактический класс:

-(void)sendview:(NSString *)server params:(NSString *)params
{

    NSURL* url=[[NSURL alloc] initWithString:server];   
    NSMutableURLRequest *urlRequest=[NSMutableURLRequest requestWithURL:url];
    [url release];

    [urlRequest setHTTPMethod:@"POST"];
    [urlRequest setHTTPBody:[params dataUsingEncoding:NSUTF8StringEncoding]];

    connectionResponse=[[[NSURLConnection alloc] initWithRequest:urlRequest delegate:self] autorelease];
    //NSURLConnection *connectionResponse = [[NSURLConnection alloc] initWithRequest:urlRequest delegate:self];


    if (!connectionResponse)
    {
        NSLog(@"Failed to submit request");
    }
    else
    {
        NSLog(@"---------Report  Request submitted ---------");
    }
}

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
    NSLog(@"report received response");

}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
   }

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
    NSLog(@"report failed with error");
    NSLog(@"%@", [error description]);
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
    NSLog(@"Promo View Reported");
}

-(void)dealloc

{
    [connectionResponse release];

    [super dealloc];

}

Ответы [ 4 ]

2 голосов
/ 17 мая 2010

Вы должны реализовать соединение: didFailWithError: в делегате.

NSLog(@"%@", [error description]); покажет вам, что именно пошло не так.

0 голосов
/ 18 мая 2010

Оказывается, это связано с резьбой

NSURLCПодключение и передача потоков - iPhone

Я использовал это решение

http://www.depl0y.com/?p=345

0 голосов
/ 18 мая 2010

Вы печатаете заголовки ответа? Я бы посоветовал вам реализовать почти каждый метод делегата для проверки того, что на самом деле происходит с вашим соединением, попробуйте сначала распечатать метод didReceiveResponse и некоторые данные, которые вы получаете, используя соединение: метод didReceiveData.

И, возможно, кодировка ваших данных не может быть обработана сервером, попробуйте использовать NSUTF8StringEncoding вместо NSISOLatin1StringEncoding в качестве кодировки тела.

0 голосов
/ 17 мая 2010

Ваш url действительно создается? Если есть какие-либо проблемы, метод NSURLs initWithString: вернет nil.

...