我在Linux中有一个用于sh的-X POST的sh脚本:
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,然后才能发送curl命令。
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")
谢谢...
答案 0 :(得分:0)
在文件名路径前使用@:
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'
答案 1 :(得分:0)
$()进行救援,替换
--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如何实现$()的可移植性,例如它肯定不能在Microsoft的cmd.exe上运行,但至少可以在bash上运行