2013-04-10 86 views
1

我已经从我的客户给予了REST URI是如下:WSO2宁静的API

https://vm3.digitary.net/verifier/HEDDRequestDocumentAccess

以下请求XML已经被张贴到上述URI获得响应XML。

<documentAccessRequest xmlns="http://www.digitary.net/schema/dare/hedd/documentAccessRequest/2013" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.digitary.net/schema/dare/hedd/documentAccessRequest/2013 http://www.digitary.net/schema/dare/hedd/documentAccessRequest/2013"> 
        <head> 
        <institutionCode>BBCU</institutionCode> 
        <username>HEDDUser</username> 
        <password>HEDDPass</password> 
        </head> 
        <body> 
         <heddEnquiryId>12347895844</heddEnquiryId> 
         <enquiree> 
          <email>[email protected]</email> 
          <firstName>Jane</firstName> 
          <lastName>Doe</lastName> 
         </enquiree> 
         <enquirer> 
          <organisation>BBC</organisation> 
          <contactName>Jeremy Clarkson</contactName> 
         </enquirer> 
         <documentRequested>HEAR</documentRequested> 
        </body> 
       </documentAccessRequest> 

现在我必须使自己的包装REST API在WSO2 ESB 4.6.0这将只需调用具有相同的请求和响应XML上述REST URI的要求。这个想法是通过REST API传递给上面提到的API。

我已实现了以下REST API:

<api xmlns="http://ws.apache.org/ns/synapse" name="TestDareRest" context="/documentRequest" hostname="46.137.187.137" port="8280"> 
    <resource methods="POST" url-mapping="/request/*"> 
     <inSequence> 
     <log/> 
     <property name="FORCE_SC_ACCEPTED" value="true" scope="axis2"/> 
     <send> 
      <endpoint> 
       <address uri="https://vm3.digitary.net/verifier/HEDDRequestDocumentAccess" format="pox"/> 
      </endpoint> 
     </send> 
     </inSequence> 
     <outSequence> 
     <log/> 
     <property name="ContentType" value="application/xhtml+xml" scope="axis2"/> 
     <send/> 
     </outSequence> 
    </resource> 
</api> 

但上述API完全不工作,它是gving错误的负载在ESB控制台。我使用SOAPUI来测试这个REST服务并从那里发布相同的请求xml。该服务部署我们的公网IP的服务器上,并且可以通过登录中可以看出以下

https://46.137.187.137:9443/carbon/admin/index.jsp with username/pwd as admin/admin 

我试图为文本/ xml和application/XML

在SOAPUI同时设置媒体类型在文本的情况下,/XML它如下是给错误:

org.apache.axiom.soap.SOAPProcessingException:第一个元素必须包含本地名,信封,却发现documentAccessResponse 在org.apache.axiom.soap.impl.builder。 StAXSOAPModelBuilder.constructNode(StAXSOAPModelBuilder.java:305)

在应用/ XML的情况下,它是给以下错误

INFO - LogMediator到:http://www.w3.org/2005/08/addressing/anonymous,WSAction:,的SOAPAction:,邮件ID:瓮:UUID:53a782ab-2081-4cb1-9e94-910b75816361,方向:响应 [2013年4月10日16:05:12911]错误 - PassThroughHttpSender无法提交响应 java.lang.UnsupportedOperationException

请帮我解决这个问题,因为它已经得到了我很多的关键。

由于提前 Shakshi

回答

0

你能切换到交通运输非阻塞检查? 您可以更改axis2.xml中的传输发送者和接收者。 媒体类型是应用程序/ xml ..而不是来自soap请求的text/xml。

要发布请求,您可以使用卷曲工具。

# curl -X POST -d @request.xml "URL" 
+0

我做了你所建议的,现在传输是非阻塞的,因为你可以在ESB启动日志中看到meesage。 INFO - HttpCoreNIOListener HTTP监听器在端口8280上启动。但是我的REST API不工作,现在它给出错误ERROR - HttpCoreNIOSender org.apache.http.ProtocolException:传输编码头已经存在(Synapse可能试图发送一个确切的反应不止一次) – ShakshiS 2013-04-11 11:55:53