少说话多写代码之GO开发——003:go访问webservice

栏目: Go · 发布时间: 6年前

内容简介:以post请求为例,post方式,go访问webservice很简单,使用http.Post方法。参数则写起来比较麻烦,使用xml拼接方式。

以post请求为例,

post方式,go访问webservice很简单,使用http.Post方法。

参数则写起来比较麻烦,使用xml拼接方式。

我们来看在postman中如何访问的: https://blog.csdn.net/yysyangyangyangshan/article/details/86650012 ,这里需要把参数拼接成xml格式。

看代码如何实现,

package main
import (
	"fmt"
    "net/http"
	"io/ioutil"
	"bytes"
	"unsafe"
)

func checkErr(err error){
	if err!=nil{
		panic(err)
	}
}
func main(){
	//测试调用webservice
	paras :="<paraName1>hhhh</paraName1 >"+
	"<paraName2>kkkk</paraName2>"+
	"<paraName3>TY</paraName3>"+
	"<paraName4>1</paraName4>"

	postStr := GenSOAPXml("http://tempuri.org/", "MethodName", paras)
	PostWebService("http://ganmane.com/hehe/wodishen.asmx", "MethodName", postStr)
}

func PostWebService(url string, method string, value string) string {
	res, err := http.Post(url, "text/xml; charset=utf-8", bytes.NewBuffer([]byte(value)))
	//错误日志
	if err != nil {
		fmt.Println("post error", err)
	}
	data, err := ioutil.ReadAll(res.Body)
	
	if err != nil {
		fmt.Println("read error", err)
	}
	res.Body.Close()
	fmt.Printf("result----%s", data)
	str :=(*string)(unsafe.Pointer(&data))
	return  *str
}

func GenSOAPXml(nameSpace string, methodName string, valueStr string) string {
	soapBody := `<?xml version="1.0" encoding="utf-16"?>`
	soapBody += `<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">`
	soapBody += " <soap:Body>"
	soapBody += "<" + methodName + " xmlns=\"" + nameSpace + "\">"
	//以下是具体参数
	soapBody +=  valueStr 

	soapBody += "</" + methodName + "> </soap:Body></soap:Envelope>"
	fmt.Println(soapBody)
	return soapBody
}

代码中对应地方改为实际的参数和地址方法即可。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

网飞传奇

网飞传奇

[美]吉娜·基廷 / 谭永乐 / 中信出版社 / 2014-1-1 / 42

飞的历史充满了传奇色彩,它的崛起伴随着复杂斗争、幸运转折、个人背叛……它自身的历史比它出租的那些电影还要更富有戏剧性。网飞在1997年建立,而建立的原因仅仅是因为创始人伦道夫和哈斯廷斯没有按时归还租借的DVD,还要缴纳因此而产生的滞纳金。 1999年,网飞公司摒弃了百视达的“每片付租”模式,转而采用了一种订阅模式:用户只需要支付固定费用,就能尽情租片观赏,免去了到期还片日、滞纳金、运费和手续......一起来看看 《网飞传奇》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具