我一直在试图找出我的错误是在这个特定的功能。 这与网上发布的功能非常相似,只需稍作调整即可。无论如何,我在变量$ PAYMENTPAGE-> ipa_url中有一个特定的URL。我试图发布到这个,只是有一个返回数据('测试')来验证连接是否正常。相反,我不断收到一个空白页面。遇到麻烦从使用PHP fopen与流上下文接收数据返回
我已经设法使用curl扩展来使用它,但宁愿只是简单地使用流,因为它们与任何扩展一起使用。我知道正在建立连接,因为我收到了我修复的异常错误,但现在我只是很难弄清为什么没有信息从邮件中返回。
function doPostRequest($url, $data, $optional_headers = null)
{
$params = array('http' => array(
'method' => 'POST',
'content' => $data
));
if ($optional_headers !== null) {
$params['http']['header'] = $optional_headers;
}
$ctx = stream_context_create($params);
$get_stream = true;
try{
$fp = @fopen($url, 'rb', false, $ctx);
if (!$fp) {
throw new Exception("Problem creating stream from $url, \n\t".implode("\n\t", error_get_last()));
}
$response = @stream_get_contents($fp);
if ($response === false) {
throw new Exception("Problem reading data from $url, \n\t".implode("\n\t", error_get_last()));
}
$get_stream = false;
} catch(Exception $e){
mcFatal("Error(".date('Y-m-d h:i:s').'):'.$e->getMessage()."\n");
}
if($get_stream){
return false;
}
return $response;
}
我在想`stream_get_contents`是否会引发任何警告。删除错误抑制`@`,并确保你的`error_reporting`足够低以查看它(以及`display_errors`或`log_errors`)。另外,我不知道用f打开一个带有二进制标志的URL是否是预期的行为?无论如何,看看用`file_get_contents`替换`fopen` +`stream_get_contents`是否有所作为。 – Fanis 2011-01-28 22:57:15