web-dev-qa-db-ja.com

SOAP HTTPとしてのリクエストPOST

私はSOAP HTTPとしてのリクエストPOSTプロジェクトの制約のためにSOAPUIで送信しています。リクエストはここにあります:

POST httplink HTTP/1.1
Accept-Encoding: gzip,deflate
Content-Type: text/xml;charset=UTF-8
SOAPAction: "urn:HPD_IncidentInterface_WS/HelpDesk_Query_Service"
Content-Length: 725
Host: itsm-mt-dev
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.1.1 (Java 1.5)


<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:HPD_IncidentInterface_WS">
   <soapenv:Header>
      <urn:AuthenticationInfo>
         <urn:userName>XXXXXXXXXX</urn:userName>
         <urn:password>XXXXXXXXX</urn:password>
         <!--Optional:-->
         <urn:authentication>?</urn:authentication>
         <!--Optional:-->
         <urn:locale>?</urn:locale>
         <!--Optional:-->
         <urn:timeZone>?</urn:timeZone>
      </urn:AuthenticationInfo>
   </soapenv:Header>
   <soapenv:Body>
      <urn:HelpDesk_Query_Service>
         <urn:Incident_Number>XXXXXXXXXX</urn:Incident_Number>
      </urn:HelpDesk_Query_Service>
   </soapenv:Body>
</soapenv:Envelope>

SOAPActionヘッダーを設定しましたが、SOAPActionヘッダーエラーは表示されません。

次のような応答:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <soapenv:Body>
      <soapenv:Fault>
         <faultcode xmlns:ns1="http://xml.Apache.org/axis/">ns1:Client.NoSOAPAction</faultcode>
         <faultstring>no SOAPAction header!</faultstring>
         <detail>
            <ns2:hostname xmlns:ns2="http://xml.Apache.org/axis/">itsm-mt-dev</ns2:hostname>
         </detail>
      </soapenv:Fault>
   </soapenv:Body>
</soapenv:Envelope>

誰も私たちがここでできることを私に提案できますか?

15
Arun

間違ったsoapActionヘッダーを送信しているようです。 WSDLを見て、テスト対象のサービスのsoapAction要素の値を見つけます。

WSDLで、<soap:operation soapAction="http://example.com/GetLastTradePrice"/>に類似した行を探します。

18
request.Headers.Add( "SOAPAction", YOUR SOAP ACTION );
4
ynneh

// Delphi

var
 xmlhttp : IXMLHTTPRequest; // unit MSXML2_TLB
begin
 xmlhttp := CoXMLHTTP.Create;
 xmlhttp.open('POST', Edit7.Text, False, EmptyParam, EmptyParam);
 xmlhttp.setRequestHeader('SOAPAction','POST')
0
Vadim

APIを投稿する場合は、SOAPActionaddを追加する必要があります。

postman image

0
ankit

Ynnehによって提案された答えにコメントを追加しようとしましたが、コードは読み込めませんでした。彼の答えは有用ですが、短すぎます。

Httpwebrequestを作成してから、ヘッダーを追加します。以下は完全な例です。

    Dim bytSoap = System.Text.Encoding.UTF8.GetBytes("soap content")

        Dim wrRequest As HttpWebRequest = HttpWebRequest.Create("xxxxx")

        wrRequest.Headers.Add("your soap header", "xxx")

        wrRequest.ContentType = "text/xml; charset=utf-8"
        wrRequest.Method = "POST"
        wrRequest.ContentLength = bytSoap.Length

        Dim sDataStream As Stream = wrRequest.GetRequestStream()
        sDataStream.Write(bytSoap, 0, bytSoap.Length)
        sDataStream.Close()

        Dim wrResponse As WebResponse = wrRequest.GetResponse()
        sDataStream = wrResponse.GetResponseStream()
        Dim srReader As StreamReader = New StreamReader(sDataStream)
        Dim strResult As String = srReader.ReadToEnd()
        txtResult.Text = strResult
        sDataStream.Close()
        srReader.Close()
        wrResponse.Close()