package main import ( "io/ioutil" "net/http" "net/url" "fmt" "encoding/json" ) //---------------------------------- // 期货信息调用示例代码 - 聚合数据 // 在线接口文档:http://www.juhe.cn/docs/180 //---------------------------------- const APPKEY = "*******************" //您申请的APPKEY func main(){ //1.期货合约信息 Request1() //2.国债期货转换因子信息 Request2() //3.获取期货最新市场信息快照 Request3() } //1.期货合约信息 func Request1(){ //请求地址 juheURL :="http://japi.juhe.cn/future/futureContract" //初始化参数 param:=url.Values{} //配置请求参数,方法内部已处理urlencode问题,中文参数可以直接传参 param.Set("key",APPKEY) //您申请的appKey param.Set("secID","") //合约内部编码,可通过<a href="http://www.juhe.cn/docs/api/id/159/aid/513" target="blank">SecID接口</a>接口获得(可多值输入,以","分割) param.Set("ticker","") //合约交易代码,如'cu1106'(可多值输入.以","分割) param.Set("exchangeCD","") //期货交易所,如:XZCE 郑州商品交易所, CCFX 中国金融期货交易所, XSGE 上海期货交易所, XDCE 大连期货交易所 param.Set("pagesize","") //指定每页返回数量,默认全部 param.Set("pagenum","") //指定返回第几页,默认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"]) } } } //2.国债期货转换因子信息 func Request2(){ //请求地址 juheURL :="http://japi.juhe.cn/future/guozhai" //初始化参数 param:=url.Values{} //配置请求参数,方法内部已处理urlencode问题,中文参数可以直接传参 param.Set("key",APPKEY) //您申请的appKey param.Set("secID","") //合约内部编码,(可多值输入) param.Set("ticker","") //合约交易代码,如'cu1106'(可多值输入) param.Set("pagesize","") //指定每页返回数量,默认全部 param.Set("pagenum","") //指定返回第几页 //发送请求 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/future/query" //初始化参数 param:=url.Values{} //配置请求参数,方法内部已处理urlencode问题,中文参数可以直接传参 param.Set("key",APPKEY) //您申请的appKey param.Set("instrumentID","") //一只或多只期货代码,若空,则表示获取所有上市期货的行情数据 param.Set("field","") //返回字段,用,分隔,如field=lastPrice,shortNM,默认为空,返回全部字段,不选即为默认值。返回字段见下方。 //发送请求 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) }