使用查询字符串&发送SOAP请求使用CURL

时间:2015-11-13 02:24:35

标签: php curl cookies soap

我正在尝试从一个实际上有登录机制的网站获取报告。到目前为止,我已经能够将cookie保存在文件中。

        $url = 'https://<site>/action/method/blah';
        $options = array(

            'textUsername' => 'alpha',
            'textPassword'  => 'beta',
            'appId'  => 'gama',
            'browser' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:41.0) Gecko/20100101 Firefox/41.0'
        );
        $cookie_file = APPPATH.'cookies/cookie.txt';
        $postdata = http_build_query($options);

        $ch = curl_init();
        curl_setopt ($ch, CURLOPT_URL, $url);
        curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt ($ch, CURLOPT_USERAGENT, $options['browser']);
        curl_setopt ($ch, CURLOPT_TIMEOUT, 60);
        curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 0);
        curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt( $ch, CURLOPT_COOKIESESSION, true );
        curl_setopt( $ch, CURLOPT_COOKIEJAR, $cookie_file );
        curl_setopt( $ch, CURLOPT_COOKIEFILE, $cookie_file );
        curl_setopt ($ch, CURLOPT_REFERER, $url);

        curl_setopt ($ch, CURLOPT_POSTFIELDS, $postdata);
        curl_setopt ($ch, CURLOPT_POST, 1);
        $result = curl_exec ($ch);

        echo $result;
        curl_close($ch);

现在我想扩展它以获取报告,我在firefox中拦截了原始请求,它看起来包含以下内容。

Headers, Cookies, Query String, POST Data

在标题中,它表示request-type : SOAP Cookie,查询字符串具有键值对,POST数据具有XML文档。

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body>......

有人可以帮助我扩展现有代码以发送获取报告的请求吗?

我需要回答以下问题。

我们可以使用现有的Curl处理程序$ch发送第二个SOAP请求吗? 如果是,我们如何指定它来使用我创建的cookie文件? 另外,如何在请求中添加查询字符串和XML POST数据?

任何帮助都会有所帮助。

0 个答案:

没有答案