1

我有一个 iPhone 应用程序,它应该向我的服务器发送 POST 数据,以便在 MySQL 数据库中注册设备,这样我们就可以向它发送通知等。它将其唯一标识符、设备名称、令牌和其他一些小信息(例如密码和用户名)作为 POST 请求发送到我们的服务器。问题是有时服务器没有收到数据。我的意思是,它不仅接收 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]; 
4

1 回答 1

1

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

于 2010-03-07T08:50:21.940 回答