如何修复302 Found CURL?

时间:2012-04-19 10:33:05

标签: php xml curl http-status-code-302

我正在尝试使用PHP脚本中的HTTP POST通过CURL发送XML数据。我在执行时收到以下消息。

实测值 该文件已移至here

这是我的代码。

<?php
$url = "https://usm.channelonline.com/REQUEST";

$post_string = '<export_documents_request schemaVersion="4.0">
  <options>
    <onlyUnexported>false</onlyUnexported>
    <eventInRange>
      <eventType>modified</eventType>
      <after>2005-01-01T10:00:00Z</after>
    </eventInRange>
  </options>
</export_documents_request>';


$header  = "POST HTTP/1.1 \r\n";
$header .= "Content-type: text/xml \r\n";
$header .= "Content-length: ".strlen($post_string)." \r\n";
$header .= "Content-transfer-encoding: text \r\n";
$header .= "Connection: close \r\n\r\n"; 
$header .= $post_string;

$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,TRUE);
curl_setopt($ch,CURLOPT_MAXREDIRS,10);
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 4);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $header);

$data = curl_exec($ch); 

if(curl_errno($ch))
    print curl_error($ch);
else
    echo $data;
    curl_close($ch);

?>

这是执行时的屏幕视图。

enter image description here

我擅长PHP但只熟悉CURL。你能帮我解决一下这个问题吗?

1 个答案:

答案 0 :(得分:1)

或者像MrCode指出的那样,服务器并没有真正响应301/302或者您的PHP正在以安全模式运行,这不允许使用CURLOPT_FOLLOWLOCATION