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) }