php
  • xml
  • curl
  • http-status-code-302
  • 2012-04-19 12 views 0 likes 
    0

    PHPスクリプトでHTTP POSTを使用してCURLを使用してXMLデータを送信しようとしています。私は実行時に次のメッセージを受け取ります。302発見されたCURLを修正するには?

    found 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 'で応答し、' 302'または '301'コードで応答するのではなく、' Found'メッセージを表示すると思われます。 – MrCode

    +0

    このレスポンスはどのヘッダに送信されますか? –

    +0

    どのように問題を修正しましたか?私は同じ問題を抱えています...ありがとう! – User2010101

    答えて

    1

    MrCodeが指摘したように、サーバーは実際に301/302で応答しないか、またはPHPがCURLOPT_FOLLOWLOCATIONを使用できないセーフモードで動作しています。

    +0

    PHPがセーフモードで実行されていると、 'safe_modeまたはopen_basedirが設定されているときにCURLOPT_FOLLOWLOCATIONをアクティブにできないような致命的なエラーが発生します。 ' –

    +0

    致命的なエラーではなく警告が表示されます。 – lafor

    +0

    はい、あなたは正しいです。とにかくそれは) –

    関連する問題