HTTP POST请求不起作用,没有调用委托方法

时间:2010-05-17 14:59:55

标签: iphone http nsurlconnection

我想知道为什么这个HTTP POST请求无法在我的iPhone应用程序中运行。

我知道URL确实正确并且我发送的变量是正确的,但由于某种原因,.aspx页面没有收到请求。

修改

我将代码重构为自己的类,并使用自己的委托方法。但是没有调用委托方法。

这个类的调用方式如下:

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 个答案:

答案 0 :(得分:2)

您应该在委托中实现连接:didFailWithError :.

NSLog(@"%@", [error description]);会告诉你,到底出了什么问题。

答案 1 :(得分:0)

您的url是否真的被创建了?如果有任何问题,NSURL initWithString:方法将返回nil

答案 2 :(得分:0)

您是否正在打印响应标头?我建议您实现几乎每个委托方法来检查连接实际发生的情况,首先尝试打印didReceiveResponse方法,以及使用连接接收的一些数据:didReceiveData方法。

也许数据的编码是服务器无法处理的,尝试使用 NSUTF8StringEncoding 而不是NSISOLatin1StringEncoding作为正文编码。

答案 3 :(得分:0)

它变得与线程化有关

NSURLConnection delegation and threading - iPhone

我使用了这个解决方案

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