2017-07-21 205 views
1

以下是我的預期REQ XML來形成使得XML在HTTP POST golang發送

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

,使這個XML我用下面的Go代碼

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) 
 
\t client := &http.Client{} 
 
\t url := "http://localhost:8080/searchblox/api/rest/docdelete" 
 
\t // build a new request, but not doing the POST yet 
 
\t req, err := http.NewRequest("POST", url, bytes.NewBuffer(bytexml)) 
 
\t if err != nil { 
 
\t \t fmt.Println(err) 
 
\t } 
 
req.Header.Add("Content-Type", "application/xml; charset=utf-8") 
 
\t // now POST it 
 
\t resp, err := client.Do(req) 
 
\t if err != nil { 
 
\t \t fmt.Println(err) 
 
\t } 
 
\t fmt.Println(resp)

但這裏要求形成並不像我想像的要形成 請求XML形成爲:{{} {12321321 {}樣品www.//sample.com}} 請建議什麼是這裏

腳麻
+0

的一個問題是XMLName是Documentxml和DeleteXml空。因此,請填寫空的「{}」值。 –

+0

應該提到什麼 –

回答

1

你的XML定義是正確的,你會得到預期的格式。但在你的問題。字段requestxml.Document.Location具有不正確的URL格式值,不確定這是否可能是您的服務器的問題。

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

輸出:

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

編輯:

可能是你的服務器期待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