问候,
我正在尝试使用ASIHttpRequest将数据简单地发布到网址。
这是我的代码:
__block ASIHTTPRequest *request=[ASIHTTPRequest requestWithURL:url];
[request setPostBody:[NSMutableData dataWithData:[@"uname=Hello" dataUsingEncoding:NSUTF8StringEncoding]]];
[request setDelegate:self];
[request setCompletionBlock:^{
NSString *response=[request responseString];
UIAlertView *msg=[[UIAlertView alloc] initWithTitle:@"Response" message:response delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[msg show];
[msg release];
}];
[request setFailedBlock:^{
NSError *error =[request error];
}];
[request startAsynchronous];
基本上,我的网址是xxx.xxx.xxx.xxx/login.php,当我转储PHP $ _POST变量时,我只得到一个空数组 - 即没有发送POST参数! PHP的其余部分经过测试并正常运行。
我查看了allseeing-i.com文档和示例,似乎无法解决此问题。
非常感谢任何见解。
非常感谢,
答案 0 :(得分:2)
我遇到了完全相同的问题。我正在使用ASIHTTPRequest并尝试设置自己的POST数据。我已经尝试了[request setPostBody:]和[request appendPostData:]。
当我在启动请求之前运行这些行时,我发现方法和数据都是我期望的。
NSLog(@"%@", [request requestMethod]);
NSLog(@"%@", [[[NSString alloc] initWithBytes:[[request postBody] bytes]
length:[[request postBody] length]
encoding:NSUTF8StringEncoding] autorelease]);
但是,当我将其发送到服务器时,会发出请求并记录,但POST数据为空。
但是,我通过切换到ASIFormDataRequest来获得我的代码。然而,阅读documentation告诉我,你和我正在做的事应该是有效的,所以我怀疑这是ASIHTTPRequest中的一个错误,我将联系作者,看看是否是这种情况。
<强>更新强>
一种可能性是代码重定向到另一个URL。在这种情况下,可以删除后期数据。如果是这种情况,您可以尝试使用
[request setShouldUseRFC2616RedirectBehaviour:YES];⠀⠀⠀
允许请求将发布数据发送到重定向的URL。
答案 1 :(得分:0)
我相信您需要为异步设置回调函数。
-(void)requestFinished:(ASIHTTPRequest *)request{
NSLog([request responseString]);
}
编辑:再看一遍,你在那里有一些完成区块代码......之前从未见过,但也许是照顾我上面发布的内容