亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

手把手教你做關鍵詞匹配項目(搜索引擎)---- 第八天

2019-11-15 01:44:50
字體:
來源:轉載
供稿:網友
手把手教你做關鍵詞匹配項目(搜索引擎)---- 第八天

第八天

話說小帥帥自從走進了淘寶開放平臺這個迷霧森林,感覺這迷霧森林好大,正當他無所適從的時候。

一位悅耳動聽的聲音響起來了,甜甜的聲音說道:親,想通過這片森林嗎,我將指引你前進。

小帥帥一聽,那種感覺,身體不由自主的跟隨這聲音而去,突然一道強光閃過,啊.....

小帥帥驚醒了。小帥帥一看時間,我滴個天,這么晚了。就這樣小帥帥從業一來第一次遲到。

其實小帥帥在平臺里面琢磨了一個晚上,整個晚上其實也沒琢磨個啥出來。

正當要到公司的時候,手機的鈴聲響起來了,一看是于老大的電話,接通電話。

于老大問候到:小帥帥,早啊, 你什么時候到公司丫。

小帥帥答到: 于老大,不好意思丫,昨天晚上研究那個淘寶開放平臺,研究太玩了,今早睡過頭了。不過我快到公司了....

于老大一聽,不好意思責怪小帥帥啥,只好說道:辛苦你了,注意休息,學會勞逸結合...

小帥帥,回到: 好的,謝謝于老大的教誨,沒事就掛了哈。。( 0害怕于老大的糖衣炮彈0 )

小帥帥回到公司后,于老大就給了一份整理后的Topclient給小帥帥,讓他去研究下,看樣子小帥帥還是樂于研究代碼,讓他看開放平臺,還真看不出什么。

淘寶寶貝API文檔:http://open.taobao.com/api/api_cat_detail.htm?spm=a219a.7386789.0.0.AjaroV&cat_id=4&category_id=102

Topclient來自Taobao SDK ,只是稍微修正,去掉了一些框架的依賴,源碼為:

<?phpclass TopClient{    public $appkey;    public $secretKey;    public $gatewayUrl = "http://gw.api.taobao.com/router/rest";    public $format = "json";    /** 是否打開入參check**/    public $checkRequest = true;    PRotected $signMethod = "md5";    protected $apiVersion = "2.0";    protected $sdkVersion = "top-sdk-php-20110929";    protected function generateSign($params)    {        ksort($params);        $stringToBeSigned = $this->secretKey;        foreach ($params as $k => $v) {            if ("@" != substr($v, 0, 1)) {                $stringToBeSigned .= "$k$v";            }        }        unset($k, $v);        $stringToBeSigned .= $this->secretKey;        return strtoupper(md5($stringToBeSigned));    }    protected function curl($url, $postFields = null)    {        $ch = curl_init();        curl_setopt($ch, CURLOPT_URL, $url);        curl_setopt($ch, CURLOPT_FAILONERROR, false);        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 15);        curl_setopt($ch, CURLOPT_TIMEOUT, 300);        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);        if (is_array($postFields) && 0 < count($postFields)) {            $postBodyString = "";            $postMultipart = false;            foreach ($postFields as $k => $v) {                if ("@" != substr($v, 0, 1)) //判斷是不是文件上傳                {                    $postBodyString .= "$k=" . urlencode($v) . "&";                } else //文件上傳用multipart/form-data,否則用www-form-urlencoded                {                    $postMultipart = true;                }            }            unset($k, $v);            curl_setopt($ch, CURLOPT_POST, true);            if ($postMultipart) {                curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);            } else {                curl_setopt($ch, CURLOPT_POSTFIELDS, substr($postBodyString, 0, -1));            }        }        $reponse = curl_exec($ch);        if (curl_errno($ch)) {            throw new Exception(curl_error($ch), 0);        } else {            $httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);            if (200 !== $httpStatusCode) {                throw new Exception($reponse, $httpStatusCode);            }        }        curl_close($ch);        return $reponse;    }    protected function logCommunicationError($apiName, $requestUrl, $errorCode, $responseTxt)    {        $localIp = isset($_SERVER["SERVER_ADDR"]) ? $_SERVER["SERVER_ADDR"] : "CLI";        $logData = "NAME:$apiName,KEY:$this->appkey,IP:$localIp,URL:$requestUrl,CODE:$errorCode,MSG:" . str_replace("/n", "", $responseTxt);        $file = fopen('taobao.api.error.log','a+');        fwrite($file,$logData);        fclose($file);    }    public function execute($request, $session = null, $need_replace = false)    {        if ($this->checkRequest) {            try {                $request->check();            } catch (Exception $e) {                $result = new stdClass();                $result->code = $e->getCode();                $result->msg = $e->getMessage();                return $result;            }        }        //組裝系統參數        $sysParams["v"] = $this->apiVersion;        $sysParams["format"] = $this->format;        $sysParams["method"] = $request->getApiMethodName();        $sysParams["app_key"] = $this->appkey;        $sysParams["timestamp"] = date("Y-m-d H:i:s");        $sysParams["partner_id"] = $this->sdkVersion;        $sysParams["sign_method"] = $this->signMethod;        if (null != $session) {            $sysParams["session"] = $session;        }        //獲取業務參數        $apiParams = $request->getApiParas();        //簽名        $sysParams["sign"] = $this->generateSign(array_merge($apiParams, $sysParams));        //系統參數放入GET請求串        $requestUrl = $this->gatewayUrl . "?";        foreach ($sysParams as $sysParamKey => $sysParamValue) {            $requestUrl .= "$sysParamKey=" . urlencode($sysParamValue) . "&";        }        $requestUrl = substr($requestUrl, 0, -1);        //發起HTTP請求        try {            $resp = $this->curl($requestUrl, $apiParams);        } catch (Exception $e) {            $this->logCommunicationError($sysParams["method"], $requestUrl, "HTTP_ERROR_" . $e->getCode(), 'RETRY:' . $e->getMessage());            $result = new stdClass();            $result->code = $e->getCode();            $result->msg = $e->getMessage();            return $result;        }        //解析TOP返回結果        $respWellFormed = false;        if ("json" == $this->format) {            if ($need_replace) {                $resp = preg_replace('/[/r/n]+/', '', $resp);            }            $respObject = json_decode($resp);            if (null !== $respObject) {                $respWellFormed = true;                foreach ($respObject as $propKey => $propValue) {                    $respObject = $propValue;                }            }        } else if ("xml" == $this->format) {            $respObject = @simplexml_load_string($resp);            if (false !== $respObject) {                $respWellFormed = true;            }        }        //返回的HTTP文本不是標準JSON或者XML,記下錯誤日志        if (false === $respWellFormed) {            $this->logCommunicationError($sysParams["method"], $requestUrl, "HTTP_RESPONSE_NOT_WELL_FORMED", $resp);            $result = new stdClass();            $result->code = 0;            $result->msg = "HTTP_RESPONSE_NOT_WELL_FORMED";            return $result;        }        return $respObject;    }}

淘寶寶貝請求類:

<?php/** * TOP API: taobao.item.get request * * @author auto create * @since 1.0, 2011-09-29 15:36:21 */class ItemGetRequest{    /**     * 需要返回的商品對象字段??蛇x值:Item商品結構體中所有字段均可返回;多個字段用“,”分隔。如果想返回整個子對象,那字段為item_img,如果是想返回子對象里面的字段,那字段為item_img.url。新增返回字段:second_kill(是否秒殺商品)、auto_fill(代充商品類型),props_name(商品屬性名稱)     **/    private $fields;    /**     * 商品數字ID     **/    private $numIid;    private $apiParas = array();    public function setFields($fields)    {        $this->fields = $fields;        $this->apiParas["fields"] = $fields;    }    public function getFields()    {        return $this->fields;    }    public function setNumIid($numIid)    {        $this->numIid = $numIid;        $this->apiParas["num_iid"] = $numIid;    }    public function getNumIid()    {        return $this->numIid;    }    public function getApiMethodName()    {        return "taobao.item.get";    }    public function getApiParas()    {        return $this->apiParas;    }    public function check()    {        RequestCheckUtil::checkNotNull($this->fields, "fields");        RequestCheckUtil::checkNotNull($this->numIid, "numIid");        RequestCheckUtil::checkMinValue($this->numIid, 1, "numIid");    }}

數據完整性檢測類

<?php/** * API入參靜態檢查類 * 可以對API的參數類型、長度、最大值等進行校驗 * **/class RequestCheckUtil{    /**     * 校驗字段 fieldName 的值$value非空     *     **/    public static function checkNotNull($value,$fieldName) {                if(self::checkEmpty($value)){            throw new Exception("client-check-error:Missing Required Arguments: " .$fieldName , 40);        }    }    /**     * 檢驗字段fieldName的值value 的長度     *     **/    public static function checkMaxLength($value,$maxLength,$fieldName){                if(!self::checkEmpty($value) && strlen($value) > $maxLength){            thr
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美成人一区在线| 亚洲欧美国产制服动漫| 日韩hd视频在线观看| 国产久一一精品| 国产精品成人av在线| 欧美夜福利tv在线| 日韩a**站在线观看| 高跟丝袜一区二区三区| 欧美在线观看一区二区三区| 日韩成人在线观看| 日韩大胆人体377p| 亚洲国产精品电影在线观看| 福利二区91精品bt7086| 国产精品一区二区三区在线播放| 日韩欧美国产网站| 亚洲人成电影在线观看天堂色| 国产一区二区三区视频免费| 久久综合色88| 欧美激情一级欧美精品| 91久久精品在线| 日韩资源在线观看| 日本午夜人人精品| 欧美日韩精品国产| 亚洲欧美变态国产另类| 夜夜嗨av一区二区三区免费区| 欧美资源在线观看| 欧美激情一二区| 国产精品激情av电影在线观看| 亚洲另类欧美自拍| 成人www视频在线观看| 久久综合久久美利坚合众国| 中文字幕av一区| 国产91热爆ts人妖在线| 国内精品伊人久久| 久久69精品久久久久久国产越南| 亚洲欧美精品suv| 91色精品视频在线| 亚洲日韩欧美视频一区| 欧美天堂在线观看| 国产在线播放不卡| 欧美日韩国产一区在线| 欧美亚洲日本网站| 91精品久久久久久久久久另类| 欧美另类交人妖| 国产香蕉97碰碰久久人人| 国产精品福利观看| 宅男66日本亚洲欧美视频| 97国产精品免费视频| 欧美黄色片在线观看| 日韩av最新在线| 日韩精品高清在线观看| 久久免费成人精品视频| 一区二区中文字幕| 国产91在线高潮白浆在线观看| 亚洲在线一区二区| 成人性生交xxxxx网站| 精品福利在线看| 亚洲四色影视在线观看| 在线精品视频视频中文字幕| 日本久久亚洲电影| 亚洲精品456在线播放狼人| 欧美色图在线视频| 亚洲成av人片在线观看香蕉| 亚洲毛片在线观看| 欧美精品情趣视频| 国产成人精品免高潮费视频| 日韩av在线免费| 成人综合网网址| 亚洲男人天堂2019| 视频一区视频二区国产精品| 国产成人久久精品| 国产日韩在线亚洲字幕中文| 日韩视频免费大全中文字幕| 国产激情久久久久| 日韩在线观看免费网站| 亚洲国产一区二区三区在线观看| 综合136福利视频在线| 91欧美日韩一区| 国产精品视频永久免费播放| 国产丝袜高跟一区| 国产精品成人免费电影| 午夜精品国产精品大乳美女| 欧美精品午夜视频| 精品久久久久久久久久久久| 91免费人成网站在线观看18| 亚洲欧美一区二区精品久久久| 尤物九九久久国产精品的特点| 欧美精品在线播放| 亚洲精品www久久久久久广东| 国产精品视频白浆免费视频| 久久久精品一区二区三区| 国产成人精品视| 一区二区三区回区在观看免费视频| 国产欧美日韩最新| 日韩理论片久久| 亚洲最大中文字幕| 国产精品日韩欧美大师| 91高清视频免费观看| 亚洲精品久久久久久久久久久| 亚洲一级片在线看| 欧美日韩亚洲国产一区| 国产午夜精品久久久| 日韩久久午夜影院| 国产99久久精品一区二区| 亚洲精品小视频| 26uuu另类亚洲欧美日本老年| 久久亚洲精品一区| 欧美激情第三页| 最近2019中文字幕大全第二页| 亚洲成人性视频| 久久国产精品久久久久久久久久| 国产精品成人久久久久| 亚洲国产精品yw在线观看| 91精品国产自产91精品| 成人网中文字幕| 欧美午夜片欧美片在线观看| 国产精品日韩一区| 久久久在线免费观看| 亚洲一区二区三区香蕉| 日韩欧美亚洲一二三区| 18性欧美xxxⅹ性满足| 91久久精品国产91性色| 国模私拍视频一区| 精品国产鲁一鲁一区二区张丽| 亚洲va久久久噜噜噜久久天堂| 久久久国产91| 第一福利永久视频精品| 日韩麻豆第一页| 国产精品高潮粉嫩av| 国产黑人绿帽在线第一区| 91精品国产综合久久香蕉| 亚洲欧美一区二区三区情侣bbw| 97免费视频在线| 中文字幕亚洲激情| 日韩精品在线观看一区二区| 欧美中文字幕精品| 欧美精品videosex性欧美| 亚洲免费电影在线观看| 日韩免费观看av| 久久久久五月天| 夜夜嗨av一区二区三区免费区| 亚洲第一精品夜夜躁人人躁| 国产精品一区专区欧美日韩| 日本一本a高清免费不卡| 久99九色视频在线观看| 国产精品自产拍在线观看| 亚洲999一在线观看www| 国产成人短视频| 在线观看欧美日韩国产| 亚洲国产欧美自拍| 国产精品香蕉av| 97精品国产97久久久久久春色| 欧洲日本亚洲国产区| 成人免费高清完整版在线观看| 日韩精品久久久久| 日韩中文在线视频| 亚洲偷熟乱区亚洲香蕉av| 91亚洲va在线va天堂va国| 操91在线视频| 日韩中文在线视频| 色狠狠av一区二区三区香蕉蜜桃| 亚洲free嫩bbb| 国产欧美在线视频| 青草成人免费视频|