我正在尝试从一个实际上有登录机制的网站获取报告。到目前为止,我已经能够将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
数据?
任何帮助都会有所帮助。