基于GO的百价网api调用代码实例

清华大佬耗费三个月吐血整理的几百G的资源,免费分享!....>>>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
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)
}