我有一个 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];