Maison  >  Article  >  php教程  >  php中Curl函数常用的两个例子,登陆/soap

php中Curl函数常用的两个例子,登陆/soap

WBOY
WBOYoriginal
2016-05-25 16:40:191864parcourir

curl在php中在性能方法要比较其它相同功能函数要高得多,下面我给大家介绍我自己常用的函数一个使用PHP curl 来做登陆后的抓取时使用,一个使用PHP curl来实现soap;我想你会感兴趣.

例子,模拟登陆,代码如下:

<?php
/** 
 * 模拟登陆
 * $url 请求地址
 * $post 需要POST的数据
 * $cookie 登陆时取的的COOKIE
 * $cookiejar cookie要存到的位置 例如/tmp/test.cookie
 * $referer 上页地址
 *
 *
 */
function vcurl($url, $post = &#39;&#39;, $cookie = &#39;&#39;, $cookiejar = &#39;&#39;, $referer = &#39;&#39;) {
    $tmpInfo = &#39;&#39;;
    //用来存放cookie的文件
    //初始化curl
    $curl = curl_init();
    //设定目标网址
    curl_setopt($curl, CURLOPT_URL, $url);
    //使用目前所用的浏览器代理
    curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER[&#39;HTTP_USER_AGENT&#39;]);
    //curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)");
    //如果有Ref参数,则设置Referer头,否则自动设置Referer头
    if ($referer) {
        curl_setopt($curl, CURLOPT_REFERER, $referer);
    } else {
        curl_setopt($curl, CURLOPT_AUTOREFERER, 1);
    }
    //如果有post数据参数,则方法为POST,并且设置数据,否则为GET
    if ($post) {
        //发送一个常规的POST请求,默认类型为:application/x-www-form-urlencoded,www.phprm.com表单提交
        curl_setopt($curl, CURLOPT_POST, 1);
        curl_setopt($curl, CURLOPT_POSTFIELDS, $post);
    }
    //如果有cookie参数,则设置
    if ($cookie) {
        curl_setopt($curl, CURLOPT_COOKIE, $cookie);
    }
    //如果有cookie文件参数,则设置存取Cookie文件名
    if ($cookiejar) {
        curl_setopt($curl, CURLOPT_COOKIEJAR, $cookiejar);
        curl_setopt($curl, CURLOPT_COOKIEFILE, $cookiejar);
    }
    //如果是302转移,则返回转移后的网址及内容
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
    //设置执行的最大秒数
    curl_setopt($curl, CURLOPT_TIMEOUT, 100);
    //返回内容中是否包含头信息
    curl_setopt($curl, CURLOPT_HEADER, 0);
    //把返回的结果存在文件或者变量中,而不是直接显示在浏览器
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    //执行函数后的返回结果
    $tmpInfo = curl_exec($curl);
    //如果出错,显示错误信息
    if (curl_errno($curl)) {
        $tmpInfo = &#39;<pre class="brush:php;toolbar:false"><b>错误:</b><br />&#39; . curl_error($curl);
    }
    //关闭curl对象
    curl_close($curl);
    //返回结果
    return $tmpInfo;
}
?>

例子,soap代码如下:

<?php
function vcurlsoap($url, $SoapRequest, $SoapAction) {
    $ch = curl_init(); //initiate the curl session
    curl_setopt($ch, CURLOPT_URL, $url); //set to url to post to
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // return data in a variable
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $SoapRequest); // post the xml
    curl_setopt($ch, CURLOPT_TIMEOUT, 60); // set timeout in seconds
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    $header = array(
        "Content-Type: text/xml"
    );
    $header[] = "Content-Length: " . strlen($SoapRequest);
    if (!is_null($SoapAction)) $header[] = &#39;SOAPAction: "&#39; . $SoapAction . &#39;"&#39;;
    curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
    $xmlResponse = curl_exec($ch);
    curl_close($ch);
    return $xmlResponse;
}
?>


永久地址:

转载随意~请带上教程地址吧^^

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn