你好,我是golang和编程的新手,我有一个新手问题。我无法在谷歌上找到答案。soap 服务器因 gowsdl 生成的代码而失败。但是我添加这个xmlns=“”来验证标签,它的工作原理就像一个魅力。那么我怎么能不通过字符串替换而是习惯性的方式将其添加到标签中呢?
服务器不接受
<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
<Body xmlns="http://schemas.xmlsoap.org/soap/envelope/">
<GetCitiesRequest xmlns="http://www.n11.com/ws/schemas">
<auth> <<<<<<<<<<<<<<<<------------ fails because no xmlns=""
<appKey>xxx</appKey>
<appSecret>xx</appSecret>
</auth>
</GetCitiesRequest>
</Body>
</Envelope>
服务器接受
<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
<Body>
<GetCitiesRequest xmlns="http://www.n11.com/ws/schemas">
<auth xmlns="">
<appKey>[string]</appKey>
<appSecret>[string]</appSecret>
</auth>
</GetCitiesRequest>
</Body>
</Envelope>
im使用快速修复:
buffers := new(bytes.Buffer)
buffers.WriteString(strings.ReplaceAll(buffer.String(),"<auth>","<auth xmlns=\"\">"))
req, err := http.NewRequest("POST", s.url, buffers)
我应该添加什么结构标签来查看空的xmlns=“” ?
type GetCitiesRequest struct {
XMLName xml.Name `xml:"http://www.n11.com/ws/schemas GetCitiesRequest"`
Auth *Authentication `xml:"auth,omitempty" json:"auth,omitempty"`
}
type Authentication struct {
AppKey string `xml:"appKey,omitempty" json:"appKey,omitempty"`
AppSecret string `xml:"appSecret,omitempty" json:"appSecret,omitempty"`
}
阿洛斯我试过了;
type Authentication struct {
XMLName xml.Name `xml:""`
AppKey string `xml:"appKey,omitempty" json:"appKey,omitempty"`
AppSecret string `xml:"appSecret,omitempty" json:"appSecret,omitempty"`
}
auth := Authentication{AppKey:"secret",AppSecret:"secret"}
auth.XMLName.Local= "auth"
auth.XMLName.Space = ""
我也尝试 auth.XMLName.Space = “ ” 空白空间,但xml.marshal将其转换为转义字符,如“"e,#34”
我想了解我如何做到像专业的方式,但不是菜鸟的方式。任何帮助赞赏。谢谢。
繁花不似锦
相关分类