我想知道为什么这个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];
}
答案 0 :(得分:2)
您应该在委托中实现连接:didFailWithError :.
NSLog(@"%@", [error description]);
会告诉你,到底出了什么问题。
答案 1 :(得分:0)
您的url
是否真的被创建了?如果有任何问题,NSURL initWithString:
方法将返回nil
。
答案 2 :(得分:0)
您是否正在打印响应标头?我建议您实现几乎每个委托方法来检查连接实际发生的情况,首先尝试打印didReceiveResponse方法,以及使用连接接收的一些数据:didReceiveData方法。
也许数据的编码是服务器无法处理的,尝试使用 NSUTF8StringEncoding 而不是NSISOLatin1StringEncoding作为正文编码。
答案 3 :(得分:0)