0

ヘッダーなしでcURLを使用してxmlをサーバーに投稿しようとしていますが、次のヘッダーを取り除くことができないようです:

Content-Disposition: form-data; name="data"; filename="tempData.xml".

これらのヘッダーを削除してファイルを送信する方法を知っている人はいますか?

コードは以下のとおりです。

$URL = www.myurl.com/process/php;

        //get post data
        $post = array("data"=>"@tempData.xml"); 

        //add headers
        /*$Headers = array
            ( "POST HTTP/1.0"
            , "Accept: text/xml"
            , "Content-type: text/xml"
            );*/

        //$Headers = array("");

        //create curl instance and set options
        $CH = curl_init($URL);
        curl_setopt( $CH, CURLOPT_TIMEOUT, 60 ); //timeout after 60 seconds
        curl_setopt( $CH, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt( $CH, CURLOPT_SSL_VERIFYHOST, false);
        curl_setopt( $CH, CURLOPT_HTTPHEADER, 0);
        curl_setopt( $CH, CURLOPT_HEADER, 0);
        curl_setopt( $CH, CURLOPT_POST, true );
        curl_setopt( $CH, CURLOPT_POSTFIELDS, $post ); // add post fields

        //echo curl_error($CH);
        $output = curl_exec( $CH );
        $info = curl_getinfo( $CH );
        //print_r($info);

        if($info['http_code'] != 200){
            //header('HTTP/1.0 500 Could Not Send XML');
            echo 'error ' . $info["http_code"];
            curl_close($CH);
            exit(1);
        }

        curl_close($CH)

;

4

1 に答える 1

0

このままだとさすがに無理です。

libcurl でマルチパートフォームポストを実行することを選択すると、実際には仕様に従ってフォームポストが実行されます。これはもともとRFC1867で指定されていましたが、その時点で既に Content-Disposition: が各フォーム パーツに存在する必要があることを指定していました。

独自の非準拠の投稿を行いたい場合は、libcurl のマルチパート フォームポスト サポートに頼るのではなく、完全に独自のバッファーを作成してください。

カスタムヘッダーを指定するコメントアウトされたコードは、ヘッダーにリクエスト行が含まれているため、間違っていると言ってしまいましょう。

于 2013-02-15T21:08:53.370 に答える