我的iphone应用程序如何将数据发送到服务器的php文件?

时间:2012-01-13 14:31:24

标签: php iphone http post

以下是我服务器中目标php文件的开头部分。

$xmlFile = file_get_contents("php://input");
echo $xmlFile."<br>";

不幸的是,浏览器中的该页面上没有打印任何内容。

以下是我的iphone编程的一部分

NSURL *url = [NSURL URLWithString:@"http://www.mywebsite.com/target.php"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request setHTTPMethod:@"POST"];
[request setValue:@"application/xml; charset=utf-8" forHTTPHeaderField:@"Content- Type"];

NSMutableData *xmlData = [NSMutableData data];
[xmlData appendData: [[NSString stringWithFormat: @"<?xml version=\"1.0\"   encoding=\"UTF-8\" ?>"] dataUsingEncoding: NSUTF8StringEncoding]];
[xmlData appendData: [[NSString stringWithFormat: @"<Packet xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance iphone_schema.xsd\" xmlns=\"http://www.mywebsite.com/iphone.xsd\">"] dataUsingEncoding: NSUTF8StringEncoding]];
[xmlData appendData: [[NSString stringWithFormat: @"<info1>%@<info1>",self.uuid] dataUsingEncoding: NSUTF8StringEncoding]];

//....append xml data strings in the same way
[request setHTTPBody:xmlData];
NSURLConnection *connect = [NSURLConnection connectionWithRequest:request delegate:self];
if(connect != nil){
    NSLog(@"valid request");
}

connect对象不是nil。但我不确定应用程序是否已将请求POST消息发送到php页面。

我在那个php文件中写了一些代码来测试连接。似乎没有从iPhone接收任何东西。那么发生了什么?我测试了几个小时!
希望可以有人帮帮我!谢谢!

3 个答案:

答案 0 :(得分:1)

设置NSURLConnection delegate methods。这将有助于您更好地诊断问题,并查看它是在iPhone还是服务器端。

另外,如果您发送POST请求。所以你不需要从PHP的输入流中读取。使用$_POST super global

您还可以通过从命令行发送请求来确保您的PHP脚本正确无误。例如* nix上的curl

答案 1 :(得分:0)

尝试ngrep。这可能有所帮助。

首先尝试设置homebrew

然后做一个

brew install ngrep

然后

sudo ngrep host mywebsite.com port 80

这应该显示mywebsite.com上设备和服务器之间发送和接收的数据。

答案 2 :(得分:0)

$ xmlFile = file_get_contents(“php:// input”); echo $ xmlFile。“
”;

如果您从发布到输入的浏览器中查看它,这只会回应一些事情,如果您的iOS发布到PHP然后您访问PHP之后就不会发生这种情况。

通常,您无法以这种方式验证它。您必须在PHP中设计响应并设置委托方法以处理PHP返回的任何内容。

如:

$xmlFile = file_get_contents("php://input");
if ($xmlFile) {
echo "{\"file\":\"$xmlFile\"}";
}

通过这种方式,您可以使用NSJSONSerializer解码iOS中的响应,并查看您发布的内容与返回的内容相同。 }