2014-04-16 42 views
9

Bazı proje kısıtlamaları nedeniyle SOAPUI'da SOAPUI olarak bir SOAP İsteği gönderiyorum. İsteğim buradadır:HTTP POST olarak bir SOAP isteği gönderirken SOAPAction başlık hatası alma POST

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> 
Ben SOAPAction başlığını ayarlamak rağmen

, hala hiç SOAPAction başlık hatası alıyorum.

Tepki şöyle:

<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> 

Hiç kimse burada neler yapabileceğini bana önerebilirsiniz?

+0

: operasyon SOAPAction =" http://example.com aşağıdaki tam örnektir/GetLastTradePrice "/>'. "HelpDesk_Query_Service" işlemi için soapAction değeri nedir? –

cevap

15

Yanlış bir soapAction başlığı gönderiyorsunuz gibi görünüyor. WSDL'ye bakın ve test edilmekte olan hizmet için soapAction elementinin değerini öğrenin.

WSDL'de <soap:operation soapAction="http://example.com/GetLastTradePrice"/> benzeri bir çizgi arayın.

3
request.Headers.Add("SOAPAction", YOUR SOAP ACTION); 
+0

("xx") wr.Headers.Add ("ur bir HttpWebRequest oluşturmak ve ' code'Dim bs = Encoding.UTF8.GetBytes ("soap") Dim wr HttpWebRequest = HttpWebRequest.Create de buna üstbilgi eklemek sabun HDR", "Xxx") wr.ContentType = "metin/xML; charset = uTF-8" wr.Method = "POST" Akış = wr.GetRequestStream olarak wr.ContentLength = bs.Length Dim SDS () sds.Write (bs, 0, bs.Length) sds.Close() WebResponse = wr.GetResponse olarak Dim wr() SDS = wr.GetResponseStream() Dim sr StreamReader = Yeni StreamReader olarak (SDS) Dim strResult As String = sr.ReadToEnd() txtResult .Text = strResult sds.Close() sr.Close() wr.Close() 'code' –

0

Ynneh tarafından önerilen yanıta yorum eklemeyi denedim, ancak kod okunamıyordu. Onun cevabı yararlıdır, ancak çok kısadır.

Bir httpwebrequest oluşturun ve sonra üstbilgileri ekleyin.

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() 
0

// Delphi `

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