2

我只是一个初级 iOS 开发人员,但我是一名全职 PHP 开发人员。我的 iOS 开发人员的应用程序通过 POST 调用我的 Web 服务,但无论出于何种原因,我的 Web 服务都没有正确接收响应。

这是他开发的 Objective-C 代码:

NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url];
NSData* requestData = [NSData dataWithBytes:[@"{\"method\":\"referrals\",
\"params\":
[{\"iv\":\"some iv value\",
\"data\":
{\"first_name\":\"pEBquIatFcWCrgEVHFhzhw==\",
\"cellular_ipv4\":\"ypMBZu80ZIeVrTpEH0daTg==\",
\"last_name\":\"353YvmRmSw9sKQ+lBrKKcg==\",
\"email\":\"tTiWcT14kuVVgmKuu7PoIw==\",
\"sent_via\":\"69JPdtxeHCAdG/cECGYg5A==\"}
}],
\"id\":\"1\"}" UTF8String] length:[reqString length]];


[request setHTTPMethod:@"POST"];
[request setValue:[NSString stringWithFormat:@"%d", [requestData length]] forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody: requestData];


if (urlConnection != nil) {
[urlConnection release];
urlConnection = nil;
}


urlConnection = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:YES];
[request release];

据我们所知,它是通过附加到键“referrals”的 POST 发送数据。但是,当我的 PHP Web 服务检查 $_POST 变量中的 'referrals' 键时,它没有找到它。这是相关的PHP代码:

if(array_key_exists('referrals', $_POST))
{
    //some code
}else
{
    //error response
}

// Send JSON response
//header('Content-type: application/json');
echo $message;

iOS 应用程序始终返回错误响应,该响应仅在 $_POST中不存在 'referrals' 时设置。我已经使用 CURL 对 PHP Web 服务进行了单元测试,并始终获得成功的结果。

错误在哪里?

4

3 回答 3

2

你的 PHP 行不应该是这个吗?

if(array_key_exists('method', $_POST))

您应该在服务器端进行调试。例如,您可以将 的内容写入var_dump($_POST)文件。

于 2012-05-16T22:19:35.593 回答
0

你在哪个网址上试试这个?如果您在模拟器上运行此操作并且您的 PHP 脚本位于 localhost 上,则如果您尝试访问这样的 url,则可能无法正常工作,http://localhost/myscript.php因为如果模拟器是虚拟机,则模拟器可能拥有自己的 localhost

在 Android 模拟器http://10.0.2.2中是主机的地址

于 2012-05-16T22:32:36.027 回答
0

事实证明,PHP 代码不是问题,而是他用来通过 POST 发送请求的方法。我无法从他那里确切地找到具体问题是什么,因为他必须多次重写才能使其正常工作。据我了解,必须调整 Objective-C 发送 POST 数据的方式。

于 2012-08-29T22:07:01.643 回答