Как опубликовать мою XML-строку в веб-сервисе, а не в XML-файле - PullRequest
0 голосов
/ 02 июля 2019

Я успешно разместил http-запрос к веб-службе, работающей на одном из наших серверов.

Обратите внимание, что я не писал веб-службу и не имею доступа к исходному коду.

Рабочий код:

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

Теперь мне вместо использования XML-файла необходимо создать XML-файл из списка значений.

Я написал функцию, которая делает это, она в основномсоединяет XML в строителе строк.и моя выходная строка выглядит правильно.

В чем я не уверен, так это в том, как мне разместить xml, так как функция post, кажется, берет путь к файлу, а не к строке?

Также собирает его вместе как строкуправильный метод или я должен подходить к нему иначе?

1 Ответ

4 голосов
/ 02 июля 2019

Я не уверен, где вы взяли

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

с. Документы говорят, что подпись net/http.Post равна

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

То есть вторым параметром является тип содержимого полезной нагрузки, подлежащей отправке, а третьим - источник, из которого следует считать данные, подлежащие отправке.

Следовательно, если у вас есть строка, содержащая данные XML (создание XML-документа с использованием строковых операций почти всегда неправильно, но пока не будем отступать), Вы можете иметь io.Reader для чтения данных с него, позвонив strings.NewReader() в вашей строке.

Таким образом, вызов станет

resp, err := http.Post("http://xxx.xxx.xx.xxx:8080/webservice/", "application/xml", strings.NewReader(yourStringWithXML))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...