基于GO的百價網api調用代碼實例

清華大佬耗費三個月吐血整理的幾百G的資源,免費分享!....>>>

 
package main
import (
    "io/ioutil"
    "net/http"
    "net/url"
    "fmt"
    "encoding/json"
)
   
//----------------------------------
// 商品比價調用示例代碼 - 聚合數據
// 在線接口文檔:http://www.juhe.cn/docs/137
//----------------------------------
   
const APPKEY = "*******************" //您申請的APPKEY
   
func main(){
   
    //1.查詢支持的商城信息
    Request1()
   
    //2.比價簡單查詢接口
    Request2()
   
    //3.比價復雜查詢接口
    Request3()
   
}
   
//1.查詢支持的商城信息
func Request1(){
    //請求地址
    juheURL :="http://api2.juheapi.com/mmb/allsites"
   
    //初始化參數
    param:=url.Values{}
   
    //配置請求參數,方法內部已處理urlencode問題,中文參數可以直接傳參
    param.Set("key",APPKEY) //應用APPKEY(應用詳細頁查詢)
   
   
    //發送請求
    data,err:=Get(juheURL,param)
    if err!=nil{
        fmt.Errorf("請求失敗,錯誤信息:\\r\\n%v",err)
    }else{
        var netReturn map[string]interface{}
        json.Unmarshal(data,&netReturn)
        if netReturn["error_code"].(float64)==0{
            fmt.Printf("接口返回result字段是:\\r\\n%v",netReturn["result"])
        }
    }
}
   
//2.比價簡單查詢接口
func Request2(){
    //請求地址
    juheURL :="http://api2.juheapi.com/mmb/search/simple"
   
    //初始化參數
    param:=url.Values{}
   
    //配置請求參數,方法內部已處理urlencode問題,中文參數可以直接傳參
    param.Set("keyword","") //要查詢關鍵字
    param.Set("key",APPKEY) //應用APPKEY(應用詳細頁查詢)
   
   
    //發送請求
    data,err:=Get(juheURL,param)
    if err!=nil{
        fmt.Errorf("請求失敗,錯誤信息:\\r\\n%v",err)
    }else{
        var netReturn map[string]interface{}
        json.Unmarshal(data,&netReturn)
        if netReturn["error_code"].(float64)==0{
            fmt.Printf("接口返回result字段是:\\r\\n%v",netReturn["result"])
        }
    }
}
   
//3.比價復雜查詢接口
func Request3(){
    //請求地址
    juheURL :="http://api2.juheapi.com/mmb/search/complex"
   
    //初始化參數
    param:=url.Values{}
   
    //配置請求參數,方法內部已處理urlencode問題,中文參數可以直接傳參
    param.Set("keyword","") //搜索關鍵字
    param.Set("key",APPKEY) //應用APPKEY(應用詳細頁查詢)
    param.Set("Site","") //商城編號,默認為0,即所有
    param.Set("PriceMin","") // 最低價格,0表示無最低價格限制
    param.Set("PriceMax","") //最高價格,0表示無最高價格限制
    param.Set("PageNum","") //頁號,大于0
    param.Set("PageSize","") //每頁返回結果數,上限為50
    param.Set("Orderby","") //排序規則,1、score 按權重從高到底排序,默認  2、price 按價格從底到高排序 3、sell 按銷售從高到底排序
    param.Set("ZiYing","") //是否自營
    param.Set("ExtraParameter","") //0:結果包含淘寶數據,1:結果不包含淘寶數據
   
   
    //發送請求
    data,err:=Get(juheURL,param)
    if err!=nil{
        fmt.Errorf("請求失敗,錯誤信息:\\r\\n%v",err)
    }else{
        var netReturn map[string]interface{}
        json.Unmarshal(data,&netReturn)
        if netReturn["error_code"].(float64)==0{
            fmt.Printf("接口返回result字段是:\\r\\n%v",netReturn["result"])
        }
    }
}
   
   
   
// get 網絡請求
func Get(apiURL string,params url.Values)(rs[]byte ,err error){
    var Url *url.URL
    Url,err=url.Parse(apiURL)
    if err!=nil{
        fmt.Printf("解析url錯誤:\\r\\n%v",err)
        return nil,err
    }
    //如果參數中有中文參數,這個方法會進行URLEncode
    Url.RawQuery=params.Encode()
    resp,err:=http.Get(Url.String())
    if err!=nil{
        fmt.Println("err:",err)
        return nil,err
    }
    defer resp.Body.Close()
    return ioutil.ReadAll(resp.Body)
}
   
// post 網絡請求 ,params 是url.Values類型
func Post(apiURL string, params url.Values)(rs[]byte,err error){
    resp,err:=http.PostForm(apiURL, params)
    if err!=nil{
        return nil ,err
    }
    defer resp.Body.Close()
    return ioutil.ReadAll(resp.Body)
}