如何将XML字符串发布到Web服务而不是XML文件

时间:2019-07-02 15:40:58

标签: xml go httprequest

我已成功将http请求发布到运行在我们其中一台服务器上的Web服务。

请注意,我没有编写Web服务,也无法访问源代码。

工作代码:

resp, err := http.Post("http://xxx.xxx.xx.xxx:8080/webservice/", "c:\\xml\\test.xml", nil)

我现在不是使用xml文件,而是需要从值列表中构建xml。

我已经编写了一个执行此操作的函数,它基本上将xml组装在字符串构建器中。我的输出字符串看起来正确。

我不确定如何处理xml,因为post函数似乎采用文件而不是字符串的路径?

还将其作为字符串构建在一起是正确的方法还是应该以不同的方式处理它?<​​/ p>

1 个答案:

答案 0 :(得分:4)

我不确定你去了哪里

resp, err := http.Post("http://xxx.xxx.xx.xxx:8080/webservice/", "c:\\xml\\test.xml", nil)

来自。 The docsnet/http.Post的签名是

func Post(url, contentType string, body io.Reader) (resp *Response, err error)

也就是说,第二个参数是要发送的有效载荷的content type,第三个参数是从中读取要发送的数据的源。

因此,如果您有一个包含XML数据的字符串 (使用字符串操作构建XML文档几乎总是一件错误的事情,但现在让我们别离题), 您可以通过调用io.Reader来读取数据 strings.NewReader()在您的字符串上。

这样通话就会变成

resp, err := http.Post("http://xxx.xxx.xx.xxx:8080/webservice/", "application/xml", strings.NewReader(yourStringWithXML))