期货信息接口调用示例

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

登录 后可发表评论

    最新发布
    聚合数据©版权所有