我一直试图弄清楚我的错误在这个特定功能中的位置。 它与在线发布的功能非常相似,只有一些小的调整。无论如何,我在变量$ PAYMENTPAGE-> ipa_url中有一个特定的url。我试图发布到这个并简单地让返回数据为die('test')以验证连接是否正常进行。 相反,我不断得到一个空白页面。
我已经设法使用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;
}
答案 0 :(得分:1)
如果您使用的是Ubuntu:这是Ubuntu发布的PHP版本中的一个错误。有关详细信息,请参阅https://bugs.launchpad.net/ubuntu/+source/php5/+bug/650779。
答案 1 :(得分:-1)
您是否有任何理由不使用http协议库,例如cURL?它为您处理流,并在发生错误时生成信息。
function doPostRequest($url, $data, $optional_headers = null)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//include array of additional headers
if (count($optional_headers)) {
curl_setopt($ch, CURLOPT_HTTPHEADER, $optional_headers);
}
return curl_exec($ch);
}