Linux, Curl, отправьте -X POST без XML-файла - PullRequest
0 голосов
/ 15 ноября 2018

У меня есть небольшой sh-скрипт в Linux для -X POST с curl:

curl -X POST http://serverip:8081/WebServices/WebServiceSQLTestresult.svc?wsdl -H "Content-Type: text/xml; charset="utf-8"" -H "SOAPAction: "http://tempuri.org/IWebServiceSQLTestresult/InsertPruefResultatFromXMLFile"" --data @\u\ManInTheMiddle.xml  | grep -o 'true\|false'

, это работает нормально, но мне нужно сначала написать ManInTheMiddle.xml, а в качестве второго шага я могу отправить скручивание.команда.

ManInTheMiddle.xml

<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
    <Body>
        <InsertPruefResultatFromXMLFile xmlns="http://tempuri.org/">
            <FilePath>\\serverip\script.xml</FilePath>
        </InsertPruefResultatFromXMLFile>
    </Body>
</Envelope>

Есть ли способ сделать это без файла XML?отправьте напрямую "\ serverip \ script.xml"

, например:

curl -X POST http://serverip:8081/WebServices/WebServiceSQLTestresult.svc?wsdl -H "Content-Type: text/xml; charset="utf-8"" -H "SOAPAction: "http://tempuri.org/IWebServiceSQLTestresult/InsertPruefResultatFromXMLFile"" --d "\\serverip\script.xml"  | grep -o 'true\|false'

есть идеи?

EDIT1: я просто хочу обработать промежуточный шаг с ManInTheMiddle.xml, чтобы сервер получал прямую ссылку на файл импорта (\ serverip \ script.xml).

EDIT2: с python он работает:

url = "http://serverip/WebServices/WebServiceSQLTestresult.svc?wsdl"

import suds
import suds.client
client = suds.client.Client(url)
result = client.service.InsertPruefResultatFromXMLFile("\\\\serverip\script.xml")

спасибо ...

Ответы [ 2 ]

0 голосов
/ 15 ноября 2018

$ () на помощь, замените

--data @\u\ManInTheMiddle.xml

с

--data-raw "$(curl --silent \\serverip\script.xml)"

что-то вроде

curl -X POST http://serverip:8081/WebServices/WebServiceSQLTestresult.svc?wsdl -H "Content-Type: text/xml; charset="utf-8"" -H "SOAPAction: "http://tempuri.org/IWebServiceSQLTestresult/InsertPruefResultatFromXMLFile"" --data-raw "$(curl --silent \\serverip\script.xml)"  | grep -o 'true\|false'

обратите внимание, что IDK, как переносимый $ (), он, конечно, не будет работать на cmd.exe от Microsoft, например, но, по крайней мере, он будет работать на Bash

0 голосов
/ 15 ноября 2018

Используйте @ перед именем файла:

curl -X POST http://serverip:8081/WebServices/WebServiceSQLTestresult.svc?wsdl -H "Content-Type: text/xml; charset="utf-8"" -H "SOAPAction: "http://tempuri.org/IWebServiceSQLTestresult/InsertPruefResultatFromXMLFile"" -d @"\\serverip\script.xml"  | grep -o 'true\|false'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...