Hi, I am trying to make a post to a xmlrpc server in this format:
https://evatr.bff-online.de/evatrRPC?UstId_1=DE123456789&UstId_2=AB1234567890
&Firmenname=Firmenname einschl. Rechtsform&Ort=Ort der Firma&PLZ=12345&Strasse=Strasse der Firma
&Druck=ja
Read the results and access them in go lang by name:
An example result xml looks like this:
<params>
<param>
<value><array><data>
<value><string>Datum</string></value>
<value><string>27.07.2006</string></value>
</data></array></value>
</param>
<param>
<value><array><data>
<value><string>Uhrzeit</string></value>
<value><string>13:35:53</string></value>
</data></array></value>
</param>
<param>
<value><array><data>
<value><string>ErrorCode</string></value>
<value><string>200</string></value>
</data></array></value>
</param>
<param>
<value><array><data>
<value><string>UstId_1</string></value>
<value><string>DE123456789</string></value>
</data></array></value>
</param>
<param>
<value><array><data>
<value><string>UstId_2</string></value>
<value><string>AB1234567890</string></value>
</data></array></value>
</param>
<param>
<value><array><data>
<value><string>Firmenname</string></value>
<value><string>Firma XY Rechtsform</string></value>
</data></array></value>
</param>
<param>
<value><array><data>
<value><string>Ort</string></value>
<value><string>Firmenort</string></value>
</data></array></value>
</param>
<param>
<value><array><data>
<value><string>PLZ</string></value>
<value><string>1234</string></value>
</data></array></value>
</param>
<param>
<value><array><data>
<value><string>Strasse</string></value>
<value><string>Firmenstrasse</string></value>
</data></array></value>
</param>
<param>
<value><array><data>
<value><string>Erg_Name</string></value>
<value><string>A</string></value>
</data></array></value>
</param>
<param>
<value><array><data>
<value><string>Erg_Ort</string></value>
<value><string>A</string></value>
</data></array></value>
</param>
<param>
<value><array><data>
<value><string>Erg_PLZ</string></value>
<value><string>A</string></value>
</data></array></value>
</param>
<param>
<value><array><data>
<value><string>Erg_Str</string></value>
<value><string>A</string></value>
</data></array></value>
</param>
<param>
<value><array><data>
<value><string>Gueltig_ab</string></value>
<value><string></string></value>
</data></array></value>
</param>
<param>
<value><array><data>
<value><string>Gueltig_bis</string></value>
<value><string></string></value>
</data></array></value>
</param>
<param>
<value><array><data>
<value><string>Druck</string></value>
<value><string>ja</string></value>
</data></array></value>
</param>
</params>
I got this far:
type Params struct {
XMLName xml2.Name `xml:"params"`
Text string `xml:",chardata"`
Param []struct {
Text string `xml:",chardata"`
Value struct {
Text string `xml:",chardata"`
Array struct {
Text string `xml:",chardata"`
Data struct {
Text string `xml:",chardata"`
Value []struct {
Text string `xml:",chardata"`
String string `xml:"string"`
} `xml:"value"`
} `xml:"data"`
} `xml:"array"`
} `xml:"value"`
} `xml:"param"`
}
func XmlRpcCall(method string, args struct{UstId_1,UstId_2,Firmenname,Ort,PLZ,Strasse,Druck string}) (reply struct{Message string}, err error) {
buf, _ := xml.EncodeClientRequest(method, &args)
resp, err := http.Post("https://evatr.bff-online.de/", "text/xml", bytes.NewBuffer(buf))
if err != nil {
return
}
defer resp.Body.Close()
err = xml.DecodeClientResponse(resp.Body, &reply)
return
}
func main() {
reply, err := XmlRpcCall("evatrRPC", struct{UstId_1,UstId_2,Firmenname,Ort,PLZ,Strasse,Druck string}{"VAT1","VAT2","Name","Town","ZIP","Street","No"})
if err != nil {
log.Fatal(err)
}
fmt.Println(reply.Message)
}
My code prints the xml message, but how do get it into the struct and access for example. The Error Code value of 200?
I am pretty new to go , so anything will be helpful.