以下是我期望形成的请求XML

<custom key="234234e324e4">
<document name="sample" location="http://example.com">
</document>
</custom>

使这个XML,我已经使用下面的去代码
 type Documentxml struct {
    XMLName  xml.Name `xml:"document"`
    Name  string   `xml:"name,attr"`
    Location string   `xml:"location,attr"`
}
type DeleteXml struct {
    XMLName  xml.Name    `xml:"custom"`
    Key   string      `xml:"key,attr"`
    Document Documentxml `xml:"document"`
}

并按照以下代码在其中插入值

var requestxml DeleteXml
    requestxml.Key = "12321321"
    requestxml.Document.Name = "sample"
    requestxml.Document.Location = "www.//sample.com"
bytexml, err := xml.Marshal(&requestxml)
	client := &http.Client{}
	url := "http://localhost:8080/searchblox/api/rest/docdelete"
	// build a new request, but not doing the POST yet
	req, err := http.NewRequest("POST", url, bytes.NewBuffer(bytexml))
	if err != nil {
		fmt.Println(err)
	}
req.Header.Add("Content-Type", "application/xml; charset=utf-8")
	// now POST it
	resp, err := client.Do(req)
	if err != nil {
		fmt.Println(err)
	}
	fmt.Println(resp)


但是这里形成的请求不是我期望的那样
形成的请求xml是:{{} 12321321 {{}示例www.//sample.com}}
请在这里提出问题

最佳答案

您的XML定义是正确的,并且正在获得预期的格式。但是在你的问题。字段requestxml.Document.Location的URL格式值不正确,不确定您的服务器是否会出现此问题。

播放链接:https://play.golang.org/p/oCkteDAVgZ

输出:

<custom key="12321321">
  <document name="sample" location="http://www.sample.com"></document>
</custom>

编辑:

可能是您的服务器期望带 header 的XML。像下面一样
<?xml version="1.0" encoding="UTF-8"?>
<custom key="12321321">
  <document name="sample" location="http://www.sample.com"></document>
</custom>

带标题的更新代码,播放链接:https://play.golang.org/p/n4VYXxLE6R

08-25 14:15
查看更多