HTTP SOAP Post请求

时间:2014-06-04 11:54:28

标签: java soap cxf mule

我需要发送HTTP请求以在WS中发布一些数据

E.g:

http://localhost:8081/hello/publishAMANSequence/filter/sequenceGenerationTime=1696-09-01T00:00:00Z&AMANId=B1&landingSequenceEntry=11234567890EST

我从服务器上接受了这个错误:

 Parameter should be ordered in the following sequence: [sequenceGenerationTime, AMANId, landingSequenceEntry]

我在订单中做错了什么?

骡子流:

<jms:activemq-connector name="Active_MQ1" brokerURL="tcp://localhost:61616" validateConnections="true" doc:name="Active MQ"/>
<flow name="jmsFlow1" doc:name="jmsFlow1">
    <http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8081" path="hello" doc:name="HTTP"/>
    <cxf:jaxws-service doc:name="SOAP" serviceClass="aero.itec.amansequenceservice.AMANSequenceInfo"/>
    <component  doc:name="Java" class="implementations.AMANSequenceImpl"/>
    <mulexml:object-to-xml-transformer doc:name="Object to XML"/>
    <jms:outbound-endpoint  queue="StudioIN" connector-ref="Active_MQ1" doc:name="JMS"/>
    <logger message="#[message.payload]" level="INFO" doc:name="Logger"/>
</flow>

3 个答案:

答案 0 :(得分:1)

您提供的网址错误。在&#34;过滤&#34;之后应该有一个问号(?)。然后只将它视为参数

http://localhost:8081/hello/publishAMANSequence/filter?sequenceGenerationTime=1696-09-01T00:00:00Z&AMANId=B1&landingSequenceEntry=11234567890EST

此外,如果您尝试访问网络服务,则无法通过HTTP GET执行此操作。您需要将其作为SOAP请求发送。您可以使用CXF,AXIS等API。

答案 1 :(得分:1)

关注this tutorial

我创建了一个用于发布WS的流,它具有我执行请求的入站端点

<强> publish.flow:

 <jms:activemq-connector name="Active_MQ1" brokerURL="tcp://localhost:61616" validateConnections="true" doc:name="Active MQ"/>  
 <flow name="jmsFlow1" doc:name="jmsFlow1">

    <http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8081" path="hello" doc:name="HTTP"/>
    <cxf:jaxws-service doc:name="SOAP" serviceClass="aero.itec.amansequenceservice.AMANSequenceInfo" >
        <cxf:jaxb-databinding/>
        <cxf:inInterceptors>
            <spring:bean class="org.apache.cxf.interceptor.LoggingInInterceptor" />
        </cxf:inInterceptors>
        <cxf:outInterceptors>
            <spring:bean class="org.apache.cxf.interceptor.LoggingOutInterceptor" />
        </cxf:outInterceptors>
    </cxf:jaxws-service>

    <component  doc:name="Java" class="implementations.AMANSequenceImpl"/>
    <object-to-string-transformer doc:name="Object to String"/>
    <jms:outbound-endpoint  queue="StudioIN" connector-ref="Active_MQ1" doc:name="JMS"/>
    <logger message="#[message.payload]" level="INFO" doc:name="Logger"/>
</flow>

然后我创建一个client.class,我在其中设置变量值:

<强> client.java

public class AMANwsClient  extends AbstractTransformer{

@Override
protected Object doTransform(Object src, String enc)
        throws TransformerException {
     AMANSequence sequence = new AMANSequence();


    XMLGregorianCalendar fec;
    sequence.setSequenceGenerationTime(fec);
    sequence.setAMANId("AA");
    System.out.println(sequence);
    return sequence;
}

这个类像变换器一样使用,我们不需要在url中传递参数,只需要连接到端点URL

最后,创建 client.flow

<custom-transformer class="implementations.AMANwsClient" name="AMANwsClient" />
    <flow name="csvPublisher">

       <transformer ref="AMANwsClient" />
   <object-to-string-transformer doc:name="Object to String"/>
       <outbound-endpoint address="http://localhost:63081/hello" exchange-pattern="request-response">

           <cxf:jaxws-client clientClass="aero.itec.amansequenceservice.AMANSequenceInfo_Service" port="AMANSequenceInfoService" operation="publishAMANSequence">
               <cxf:inInterceptors>
                  <spring:bean class="org.apache.cxf.interceptor.LoggingInInterceptor" />
               </cxf:inInterceptors>
               <cxf:outInterceptors>
                  <spring:bean class="org.apache.cxf.interceptor.LoggingOutInterceptor" />
               </cxf:outInterceptors>
          </cxf:jaxws-client>

         </outbound-endpoint>

</flow>

现在我可以将有效负载保存到JMS队列中,并从浏览器,控制台和JMS重现有效负载。

如果您有一些提高计划效果的建议,我愿意听取它。

答案 2 :(得分:0)

http://localhost:8081/hello?wsdl放入 SOAPUI ...它将在那里创建请求和响应...然后您可以传递请求中的值并调用Web服务... 请查看以下内容供您参考: - http://developers-blog.org/blog/default/Webservice-testing-with-soapUIhttp://quicksoftwaretesting.com/soapui-web-service-testing-tool/