如何格式化SOAP请求

时间:2017-06-05 22:28:36

标签: web-services curl soap command-line

我想通过bash脚本中的命令行访问在线程序。我被告知我可以运行SOAP请求以访问该软件。这是我被告知可以使用的请求。

POST /OnlineAnalysis/Service.asmx HTTP/1.1
Host: cydas.org
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://www.cydas.org/OnlineAnalysis/analyseKaryotype"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <analyseKaryotype xmlns="http://www.cydas.org/OnlineAnalysis/">
      <strKaryotype>string</strKaryotype>
    </analyseKaryotype>
  </soap:Body>
</soap:Envelope>

我之前从未运行过SOAP请求,但看起来我可以使用基于this question的curl命令。我已经尝试根据我发布的链接

建模我的curl命令
curl -X POST -H "POST /OnlineAnalysis/Service.asmx HTTP/1.1" -H "Content-Type: text/xml; charset=utf-8" -H "SOAPAction: \"http://www.cydas.org/OnlineAnalysis/analyseKaryotype\"" -H "Host: cydas.org" --data-binary @request.xml

我得到了这个输出

<HTML>
<HEAD>
<TITLE>405 Method Not Allowed</TITLE>
<BASE href="/error_docs/"><!--[if lte IE 6]></BASE><![endif]-->
</HEAD>
<BODY>
<H1>Method Not Allowed</H1>
The HTTP verb used to access this page is not allowed.<P>
<HR>
<ADDRESS>
Web Server at &#99;&#121;&#100;&#97;&#115;&#46;&#111;&#114;&#103;
</ADDRESS>
</BODY>
</HTML>

<!--
- Unfortunately, Microsoft has added a clever new
- "feature" to Internet Explorer. If the text of
...

以下是我的request.xml文件的内容

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <analyseKaryotype xmlns="http://www.cydas.org/OnlineAnalysis/">
      <strKaryotype>46,XX,del(3)(p11)</strKaryotype>
    </analyseKaryotype>
  </soap:Body>
</soap:Envelope>

我不确定预期的输出是什么,因为我无法运行该程序。我只想让我的SOAP请求正常运行。

1 个答案:

答案 0 :(得分:1)

试试这个:

curl -v "http://www.cydas.org/OnlineAnalysis/Service.asmx" -H "Content-Type: text/xml;charset=UTF-8" -H "SOAPAction: \"http://www.cydas.org/OnlineAnalysis/analyseKaryotype\"" -H "Connection: Keep-Alive" -H "Host: www.cydas.org" --data @request.xml

服务器响应消息:“Karyotype del(3)(p11)无效: 染色体计数元素中的未指定错误(del(3)(p11))“

以下是完整的回复消息:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<analyseKaryotypeResponse xmlns="http://www.cydas.org/OnlineAnalysis/">
<analyseKaryotypeResult>
<Original_ISCN_Formula>del(3)(p11)</Original_ISCN_Formula>
<IsPolyClonal>false</IsPolyClonal>
<IsValidKaryotype>false</IsValidKaryotype>
<Corrected_ISCN_Formula/>
<CloneSize>0</CloneSize>
<IsIncompleteKaryotype>false</IsIncompleteKaryotype>
<Ploidy>0</Ploidy>
<ErrorMessages>The Karyotype del(3)(p11) is not valid:
Non-specified error in chromosome count element (del(3)(p11))</ErrorMessages>
</analyseKaryotypeResult>
</analyseKaryotypeResponse>
</soap:Body>
</soap:Envelope>

cURL是一个很棒的工具,但是如果你想要一个好的gui,你可以尝试其他工具,如SoapUI或Postman来测试API。 SoapUI是一个独立的Java应用程序,Postman是Chrome的一个插件。他们都是自由的。