之后就可以按照文档生成xml请求信息

为了方便快速搭建 golang 的结构粘贴如下

type Rquest struct {

XMLName xml.Name `xml:"Request"`

Service string `xml:"service,attr"`

Lang string `xml:"lang,attr"`

Head string `xml:"Head"`

Error string `xml:"ERROR"`

Body Body `xml:"Body"`

}

type Body struct {

SFOrder SFOrder `xml:"Order"`

}

type SFOrder struct {

XMLName xml.Name `xml:"Order"`

OrderId string `xml:"orderid,attr"`

ExpressType string `xml:"express_type,attr"`

JProvince string `xml:"j_province,attr"`

JCity string `xml:"j_city,attr"`

JCounty string `xml:"j_county,attr"`

JCompany string `xml:"j_company,attr"`

JContact string `xml:"j_contact,attr"`

JTel string `xml:"j_tel,attr"`

JAddress string `xml:"j_address,attr"`

DProvince string `xml:"d_province,attr"`

DCity string `xml:"d_city,attr"`

DCounty string `xml:"d_county,attr"`

DCompany string `xml:"d_company,attr"`

DContact string `xml:"d_contact,attr"`

DTel string `xml:"d_tel,attr"`

DAddress string `xml:"d_address,attr"`

ParcelQuantity string `xml:"parcel_quantity,attr"`

CargoTotalWeight string `xml:"cargo_total_weight,attr"`

Custid string `xml:"custid,attr"`

PayMethod string `xml:"pay_method,attr"`

RoutelabelService string `xml:"routelabelService,attr"`

Cargo Cargo

}

type Cargo struct {

XMLName xml.Name `xml:"Cargo"`

Name string `xml:"name,attr"`

}

type Response struct {

XMLName xml.Name `xml:"Response"`

Service string `xml:"service,attr"`

Lang string `xml:"lang,attr"`

Head string `xml:"Head"`

Error string `xml:"ERROR"`

Body RBody `xml:"Body"`

}

type RBody struct {

ResponseBody ResponseBody `xml:"OrderResponse"`

}

type ResponseBody struct {

XMLName xml.Name `xml:"OrderResponse"`

FilterResult string `xml:"filter_result,attr"`

DestCode string `xml:"destcode,attr"`

Mailno string `xml:"mailno,attr"`

Origincode string `xml:"origincode,attr"`

OrderId string `xml:"orderid,attr"`

RlsInfo RlsInfo `xml:"rls_info"`

}

type RlsInfo struct {

RlsErrormsg string `xml:"rls_errormsg,attr"`

InvokeResult string `xml:"invoke_result,attr"`

RlsCode string `xml:"rls_code,attr"`

RlsDetail RlsDetail `xml:"rls_detail"`

}

type RlsDetail struct {

WaybillNo string `xml:"waybillNo,attr"`

SourceTransferCode string `xml:"sourceTransferCode,attr"`

SourceCityCode string `xml:"sourceCityCode,attr"`

SourceDeptCode string `xml:"sourceDeptCode,attr"`

SourceTeamCode string `xml:"sourceTeamCode,attr"`

DestCityCode string `xml:"destCityCode,attr"`

DestDeptCode string `xml:"destDeptCode,attr"`

DestDeptCodeMapping string `xml:"destDeptCodeMapping,attr"`

DestTeamCode string `xml:"destTeamCode,attr"`

DestTransferCode string `xml:"destTransferCode,attr"`

DestRouteLabel string `xml:"destRouteLabel,attr"`

ProName string `xml:"proName,attr"`

CargoTypeCode string `xml:"cargoTypeCode,attr"`

LimitTypeCode string `xml:"limitTypeCode,attr"`

ExpressTypeCode string `xml:"expressTypeCode,attr"`

CodingMapping string `xml:"codingMapping,attr"`

XbFlag string `xml:"xbFlag,attr"`

PrintFlag string `xml:"printFlag,attr"`

TwoDimensionCode string `xml:"twoDimensionCode,attr"`

ProCode string `xml:"proCode,attr"`

PrintIcon string `xml:"printIcon,attr"`

}

将数据结构转换为xml格式化字符串代码如下

xmlorder, _ := xml.Marshal(sfOrder)

str2 := string(xmlorder[:])

根据文档提示将信息加密,注意这边是两层加密方式

// str为xml code 为效验码

func md5V(str string, code string) string {

md5Key := md5.New()

md5Key.Write([]byte(fmt.Sprintf("%s%s", str, code)))

xmlKey := base64.StdEncoding.EncodeToString(md5Key.Sum(nil))

return xmlKey

}

之后调用http post请求传入两个参数分别为 xml 和 verifyCode

代码如下

func HttpPost(xmls string) (err error, res model.Response) {

checkwork := "rIGDqQhU5JbIVQ*******vjcivbg"

urls := "http://bsp-oisp.sf-express.com/bsp-oisp/sfexpressService"

stringMd5 := md5V(xmls, checkwork)

responseData := model.Response{}

resp, err := http.PostForm(urls, url.Values{"xml": {xmls}, "verifyCode": {stringMd5}})

if err != nil {

return err, responseData

}

defer resp.Body.Close()

body, err := ioutil.ReadAll(resp.Body)

err = xml.Unmarshal(body, &responseData)

if err != nil {

return err, responseData

}

return err, responseData

}

主要的突出问题是:xml的转化,xml与chekwork的加密方式

顺丰bsp物流下单php接口测试,golang 调用顺丰API接口测试-Go语言中文社区相关推荐

  1. golang oracle配置文件,Golang读取并修改非主流配置文件-Go语言中文社区

    今天工作中碰到的问题,要求修改此配置文件,没看出来是什么格式,用了下面的思路: mysql { # If any of the files below are set, TLS encryption ...

  2. golang mysql 事务_golang的嵌套事务管理-Go语言中文社区

    golang的事务管理是一件很麻烦的事,,能不能像Java那样,通过Spring管理事务,最近琢磨了一下,写了一个demo,用来管理golang的事务,使其支持golang事务的嵌套调用. 其思想很简 ...

  3. go语言能编android程序吗,用 Golang 开发 Android 应用(二)—— 简单 UI-Go语言中文社区...

    计划按以下的内容更新 简单 UI 关于开发一个应用,要有自己的应用名(显示用),和包名(真正唯一的应用名),简单说一台 Android 手机中所有应用的包名是唯一的,如果新安装的应用包名和已安装的应用 ...

  4. linux环境搭建golang服务器,Linux下golang环境搭建-Go语言中文社区

    1.首先从使用wget https://storage.googleapis.com/golang/go1.12.linux-amd64.tar.gz命令下载安装包,可以根据自己的需要选择版本. 2. ...

  5. golang杀死java_用Golang来保护Java程序-Go语言中文社区

    #反编译带来的困扰 对于一个开发给自己组织内部用的程序,我们是不怎么需要考虑程序被反编译的事情的,但是对于商业软件来说,这又显得有必要,毕竟国内软件行业的竞争还是非常的激烈,大家可以把竞争对手的程序搞 ...

  6. 服务器系统goha,推荐一个轻量级且高性能的 Golang 网络库:gnet-Go语言中文社区...

    image Github 主页 博客原文 欢迎大家围观~~,目前还在持续更新,感兴趣的话可以 star 一下暗中观察哦. 简介 gnet 是一个基于 Event-Loop 事件驱动的高性能和轻量级网络 ...

  7. oracle 脚本go,Golang连接Oracle-Go语言中文社区

    Golang连接Oracle windows 一.安装MinGW 二.安装OCI 三.配置go-oci8 直接go get github.com/wendal/go-oci8(报错不用管),然后到go ...

  8. mac go linux 目标,Mac下Golang安装以及目录结构-Go语言中文社区

    1.安装步骤 a.下载地址  下载SDK后,解压到自己喜欢的目录(后面配置PATH需要用到) b.配置PATH,有很多个地方可以配置具体可参考此链(PATH配置详解),我是直接修改的~/.bash_p ...

  9. golang优秀的第三方库mysql_golang比较优秀的第三方库收集-Go语言中文社区

    golang有许多优秀的第三方库,有时要使用时忘记库名又要去github找半天,还是写下来做个笔记并且逐步添加.以下的库基本都实际使用过. log star最多的log项目,我现在基本都使用这个项目, ...

最新文章

  1. 驰骋工作流引擎设计系列04 流程引擎表结构的设计
  2. 教师资格证考试计算机知识题库,教师资格证考试题库
  3. 大咖聊数据,视频抢先看
  4. Java TCP/IP Socket 编程 笔记
  5. 『飞鸽』彻底学通string.Format以及IFormattable,IFormatProvider,ICustomFormatter
  6. python双_集成python双版本详解
  7. VBS 打开图片-幻灯片形式
  8. 同花顺股票交易接口怎样执行量化挂单策略?
  9. 数据分析——数据指标
  10. openwrt mt7620a使能uartf
  11. WNcry@2o17
  12. jquery delay_jQuery delay()函数
  13. Oracle查看ogg延时,OGG复制进程延迟不断增长
  14. Qt5 WindonwsTTS语音朗读 文字 朗读
  15. [嵌入式框架][nrf51822][SDK12.3] BLE分层设计 NUS 透传数据队列发送,提升带宽利用率
  16. Tuscany SCA软件架构设计理念分析(二)
  17. DHCP服务器是什么?
  18. Apollo 3.5硬件和系统安装指南
  19. 用于胶带输送机的传动装置的一级蜗杆减速器传动装置课程设计
  20. 泡妞与23种设计模式(转)

热门文章

  1. luogu3933 Chtholly Nota Seniorious
  2. win10无线网卡无法连接网络
  3. 壹度DIY_微信小程序组件_小程序插件开发
  4. Ardupilot代码学习笔记
  5. signature=5a537e48de3abe15561f136edabc54dc,Visual Signatures in Video Visualization
  6. 北京大学计算机考研资料汇总
  7. showToast的使用
  8. as3 俄罗斯方块 优化 美化版
  9. Java电商订单_Java电商项目学习(十) 订单管理模块开发
  10. .NET 函数调用反转