许多同学在第一次使用curl的时候感觉一个头两个大(包括我在内),看着这一条条的curl_setopt函数完全摸不着头脑,不过在你花10分钟看了我的介绍后相信你以后也能轻松戏耍php的curl了
首先,请看一个curl代码(花10秒钟,略看一遍,然后跳到后文)
1 <?php 2 $data = "<soap:Envelope>[...]</soap:Envelope>"; 3 $tuCurl = curl_init(); 4 curl_setopt($tuCurl, CURLOPT_URL, "https://example.com/path/for/soap/url/"); 5 curl_setopt($tuCurl, CURLOPT_PORT , 443); 6 curl_setopt($tuCurl, CURLOPT_VERBOSE, 0); 7 curl_setopt($tuCurl, CURLOPT_HEADER, 0); 8 curl_setopt($tuCurl, CURLOPT_SSLVERSION, 3); 9 curl_setopt($tuCurl, CURLOPT_SSLCERT, getcwd() . "/client.pem"); 10 curl_setopt($tuCurl, CURLOPT_SSLKEY, getcwd() . "/keyout.pem"); 11 curl_setopt($tuCurl, CURLOPT_CAINFO, getcwd() . "/ca.pem"); 12 curl_setopt($tuCurl, CURLOPT_POST, 1); 13 curl_setopt($tuCurl, CURLOPT_SSL_VERIFYPEER, 1); 14 curl_setopt($tuCurl, CURLOPT_RETURNTRANSFER, 1); 15 curl_setopt($tuCurl, CURLOPT_POSTFIELDS, $data); 16 curl_setopt($tuCurl, CURLOPT_HTTPHEADER, array("Content-Type: text/xml","SOAPAction: "/soap/action/query"", "Content-length: ".strlen($data))); 17 18 $tuData = curl_exec($tuCurl); 19 if(!curl_errno($tuCurl)){ 20 $info = curl_getinfo($tuCurl); 21 echo 'Took ' . $info['total_time'] . ' seconds to send a request to ' . $info['url']; 22 } else { 23 echo 'Curl error: ' . curl_error($tuCurl); 24 } 25 26 curl_close($tuCurl); 27 echo $tuData; 28 ?>