POST xml文件给RESTful服务

在客户端:

<?php

        $url = "http://your_domain/deals/test.xml"

        //compose post data

        $xml_data = '<?xml version="1.0" encoding="UTF-8"?>

        <deal slug='test'>

            <subject>test deal</subject>

        </deal>';

        //cURL

        $ch = curl_init($URL);         
        curl_setopt($ch, CURLOPT_MUTE, 1);         
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);         
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);         
        curl_setopt($ch, CURLOPT_POST, 1);         
        curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/xml'));         
        curl_setopt($ch, CURLOPT_POSTFIELDS, $xml_data);         
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);         
        $ret = curl_exec($ch);         
        curl_close($ch);

        //do stuff on $ret, reponse is also xml data

        print_r(xml2array($ret));

?>

在服务端使用fopen或者file_get_contents:

<?php   
    if ( $_SERVER['REQUEST_METHOD'] == 'POST' )
    {
        $inp = fopen("php://input");
        
        $outp = fopen("xmlfile" . date("YmdHis") . ".xml", "w");
        
        while (!feof($inp)) {
            $buffer = fread($inp, 8192);
            fwrite($outp, $buffer);
        }        
        
        fclose($inp);
        fclose($outp);
        
        echo "<html><head>test response</head><body>OK</body></html>";
    }
?>

确保服务器上php.ini里面的allow_url_fopen是打开的。



by iefreer

你可能感兴趣的:(xml,ssl,buffer,encoding,slug)