未从iPhone接收POST数据

时间:2010-03-07 08:40:02

标签: php ios mysql iphone http-post

我有一个iPhone应用程序应该将POST数据发送到我的服务器,以便在MySQL数据库中注册设备,这样我们就可以向它发送通知等。它将它的唯一标识符,设备名称,令牌以及一些其他小东西(如密码和用户名)作为POST请求发送到我们的服务器。问题是有时服务器不接收数据。我的意思是,它不仅仅是接收POST输入的空白​​值,而且根本不接收任何后期数据。我将我的服务器的所有POST输入记录到一些日志文件中,当依赖于来自设备的POST数据的脚本失败(检测到没有数据)时,我注意到它是因为没有发送POST数据。这是服务器上的一个问题,比如拒绝数据或其他什么,或者这是否必须在客户端?可能导致这种情况的原因是什么?

iPhone代码:

NSString *post = [NSString stringWithFormat:@"deviceIdentifier=%@&deviceToken=%@",deviceIdentifier,deviceToken]; 
NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:NO];
NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]]; 
NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease]; 
[request setURL:[NSURL URLWithString:@"http://website.com/RegisterScript.php"]]; 
[request setHTTPMethod:@"POST"]; 
[request setValue:postLength forHTTPHeaderField:@"Content-Length"]; 
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"]; 
[request setValue:@"MyApp-V1.0" forHTTPHeaderField:@"User-Agent"];
[request setHTTPBody:postData]; 
NSData *urlData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil]; 
NSString *response = [[NSString alloc] initWithData:urlData encoding:NSASCIIStringEncoding]; 

1 个答案:

答案 0 :(得分:1)

我建议使用ASIHTTPRequest这是一个很好的通过http进行通信的框架。它将处理异步通信,因此如果通信需要很长时间,您将不会冒着被iPhone操作系统停止的风险。还有一些方法可以更轻松地创建要发送的表单数据。