用gowsdl生成的一组类型基于NetSuite SuiteTalk web service definition:
<complexType name="TokenPassportSignature">
<simpleContent>
<extension base="xsd:string">
<attribute name="algorithm" type="xsd:string" use="required"/>
</extension>
</simpleContent>
</complexType>
<complexType name="TokenPassport">
<sequence>
<element name="account" type="xsd:string"/>
<element name="consumerKey" type="xsd:string"/>
<element name="token" type="xsd:string"/>
<element name="nonce" type="xsd:string"/>
<element name="timestamp" type="xsd:long"/>
<element name="signature" type="platformCore:TokenPassportSignature"/>
</sequence>
</complexType>
它创建了以下类型:
type TokenPassportSignature struct {
XMLName xml.Name `xml:"urn:core_2018_2.platform.webservices.netsuite.com TokenPassportSignature"`
Value string
Algorithm string `xml:"algorithm,attr,omitempty"`
}
type TokenPassport struct {
XMLName xml.Name `xml:"urn:core_2018_2.platform.webservices.netsuite.com TokenPassport"`
Account string `xml:"account,omitempty"`
ConsumerKey string `xml:"consumerKey,omitempty"`
Token string `xml:"token,omitempty"`
Nonce string `xml:"nonce,omitempty"`
Timestamp int64 `xml:"timestamp,omitempty"`
Signature *TokenPassportSignature `xml:"signature,omitempty"`
}
当我尝试通过客户机处理它时,XML编码过程不喜欢Signature字段具有冲突的名称。
xml:main.TokenPassport.Signature的标记中的名称“签名”与 *main. TokenPassport签名.XMLName中的名称“TokenPassport签名”冲突
我使用extracted out the relevant bits into Go Playground来确认这是引发错误的编码器。根据Marhsal的文档,似乎字段必须匹配:
如果结构字段的XML名称是由字段标记和结构的XMLName字段定义的,则这两个名称必须相符。
有什么想法吗?
2条答案
按热度按时间1wnzp6jl1#
或者,您可能更喜欢保留嵌入式结构的名称
TokenPassportSignature
而不是名称signature
。如果字段的命名,则该行变为:Code adapted
zwghvu4y2#
不知道什么对你不起作用,但这对我起作用了,最近版本的netsuite wsdl和gowsdl:
使用
完整的概念验证:https://github.com/mk-j/go-netsuite-soap