soapAction требуется сообщение об ошибке

Я новичок в TIBCO Business Studio и на языке SOAP. Мне нужна помощь в этом проекте, над которым я работаю. Я продолжаю получать ошибки, связанные с действием SOAP.

Это необработанный SOAP-запрос на SOAPUI:

POST http://127.0.0.1:25001/MyInterface/ HTTP/1.1
Connection: close
Accept-Encoding: gzip,deflate
SOAPAction="http://tempuri.org/MyInterface/SomeMethod"
Content-Type: application/soap+xml
Content-Length: 759
Host: 127.0.0.1:25001
User-Agent: Apache-HttpClient/4.1.1 (java 1.5)

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:tem="http://tempuri.org/">   
      <soap:Header xmlns:wsa="http://www.w3.org/2005/08/addressing">
            <wsa:Action>http://tempuri.org/MyInterface/SomeMethod</wsa:Action>
            <wsa:To>http://127.0.0.1:25001/MyInterface/</wsa:To> //when I loopback
            //<wsa:To>http://SomeWebservice:Port/MyInterface</wsa:To> //when connecting directly to web service
      </soap:Header>   
      <soap:Body>   
           <tem:SomeMethod>   
                   <tem:param1>ABC</tem:param1> 
                   <tem:param2>XYZ</tem:param2>
           </tem:SomeMethod>   
      </soap:Body>
</soap:Envelope>

Это необработанный ответ об ошибке, который я продолжаю получать:

<soap-env:Envelope xmlns:soap-env="http://www.w3.org/2003/05/soap-envelope">   
  <soap-env:Header/>   
  <soap-env:Body>     
        <soap-env:Fault>         
                <soap-env:Code>           
                         <soap-env:Value>soap-env:Receiver</soap-env:Value>         
                </soap-env:Code>         
                <soap-env:Reason>           
                         <soap-env:Text xml:lang="en-US">soapAction is required</soap-env:Text>         
                </soap-env:Reason>         
                <soap-env:Detail>           
                         <tibco:myFaultDetail xmlns:tibco="http://tibcouri/">java.lang.RuntimeException: soapAction is required
at com.tibco.amf.binding.soap.runtime.transport.http.SoapHttpInboundEndpoint.processHttpPost(SoapHttpInboundEndpoint.java:346)
at com.tibco.amf.binding.soap.runtime.transport.http.SoapHttpServer.doPost(SoapHttpServer.java:195)at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:502)
at org.mortbay.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1213)at com.tibco.governance.pa.amxcomponent.pep.http.HttpPepFilter.doFilter(HttpPepFilter.java:126)
at org.mortbay.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1205)
at com.tibco.amf.implementation.common.httpfilter.GenericComponentFilter.doFilter(GenericComponentFilter.java:65)
at org.mortbay.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1205)at com.tibco.amf.hpa.tibcohost.jetty.internal.ConnectorFilter.doFilter(ConnectorFilter.java:49)
at org.mortbay.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1205)at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)
at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.Server.handle(Server.java:326)at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:536)
at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:928)at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:747)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218)at  org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:405)
at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:228)at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)at java.lang.Thread.run(Unknown Source)
                         </tibco:myFaultDetail>         
                </soap-env:Detail>    
        </soap-env:Fault>   
  </soap-env:Body>
</soap-env:Envelope>

Иногда я тоже получаю эту ошибку:

The SOAP action specified on the message, '', does not match the HTTP SOAP Action, 'http://tempuri.org/MyInterface/SomeMethod'.

Могу ли я узнать, что вызывает эти проблемы и в какую часть TIBCO Business Studio мне следует обратиться? Я указал SOAPAction в заголовке HTTP, а также включил один в заголовок SOAP. Я не уверен, почему компонент посредничества TIBCO не может их обнаружить.

Эти ошибки возникают, когда я делаю петли на localhost. В противном случае, если мой URI конечной точки является действительным веб-сервисом, он будет работать нормально.

HTTP/1.1 200 OK
Cache-Control: private
Content-Length: 652
Content-Type: application/soap+xml; charset=utf-8
Server: Microsoft-IIS/7.5
Access-Control-Allow-Origin: *
Set-Cookie: ASP.NET_SessionId=somejiberrish; path=/; HttpOnly
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: Content-Type
Access-Control-Allow-Methods: POST,GET,OPTIONS
Date: Mon, 02 Jun 2014 03:11:12 GMT
Connection: close

<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing">
<s:Header>
    <a:Action s:mustUnderstand="1">http://tempuri.org/MyInterface/SomeMethodResponse</a:Action>
</s:Header>
<s:Body>
    <SomeMethodResponse xmlns="http://tempuri.org/">
        <SomeMethodResult xmlns:b="http://schemas.datacontract.org/2004/07/SomeWebService" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">   
              <b:response1>-1</b:response1>
              <b:response2>-1</b:response2>
       </SomeMethodResult>
   </SomeMethodResponse>
</s:Body>
</s:Envelope>

Пожалуйста, помогите мне и спасибо за вашу помощь!

1 ответ

Причина в том, что некоторые продукты TIBCO ожидают заголовок HTTP SOAPAction быть записанным в случае верблюда: SoapActionв то время как другие продукты или выпуски того же продукта требуют заголовок, написанный в нижнем регистре верблюда, как в soapAction, Попробуйте все три варианта и дайте нам знать, какой из них работает для вас.

Если это не поможет, сообщите нам, какой продукт TIBCO вы используете. TIBCO BusinessStudio - это просто интегрированная среда разработки на основе Eclipse, используемая для настройки многих других продуктов TIBCO (AMX SG & SB, BW, BPM, iProcess и т. Д.).

НТН,

Хендрик

Другие вопросы по тегам