2012-04-19 7 views
0

Я пытаюсь отправить XML-данные через CURL с HTTP POST в PHP-скрипте. Я получаю следующее сообщение об исполнении.Как исправить 302 Найдено CURL?

Найдено Документ переехал 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. Можете ли вы помочь мне решить, как решить эту проблему?

+0

Использование 'CURLOPT_FOLLOWLOCATION' должно следовать за перенаправлением. Я подозреваю, что сервер отвечает «200 OK» и печатает сообщение «Found», вместо того, чтобы отвечать на запрос кодом «302» или «301». – MrCode

+0

Какие заголовки посылают этот ответ? –

+0

Как вы решили проблему? У меня такая же проблема ... спасибо! – User2010101

ответ

1

Как и в случае с MrCode, сервер не отвечает 301/302, или ваш PHP работает в безопасном режиме, что не позволяет использовать CURLOPT_FOLLOWLOCATION.

+0

, если PHP будет работать в безопасном режиме, он будет генерировать фатальную ошибку, такую ​​как 'CURLOPT_FOLLOWLOCATION не может быть активирована, если установлено safe_mode или open_basedir'. –

+0

Там будет только предупреждение, а не фатальная ошибка. – lafor

+0

Да, вы правы. Во всяком случае, это было бы) –