簡體   English   中英

如何從WSO2_ESB代理服務調用WSO2_AM中的API

[英]How to Invoke API in WSO2_AM from WSO2_ESB Proxy Service

我已經在WSO2AM發布了一個API,商店中顯示的網址是https://{ip}:8243/phoneverify/1.0.0

現在,我想做的是從ESB代理服務(稍后將由調度程序調用)中調用它,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
       name="a"
       transports="https,http"
       statistics="disable"
       trace="disable"
       startOnLoad="true">
   <target>
      <inSequence>
         <log level="full"/>
         <send>
            <endpoint>
               <http method="get"
                     uri-template="https://{ip}:8243/phoneverify/1.0.0/CheckPhoneNumber">
                  <timeout>
                     <duration>30000</duration>
                     <responseAction>fault</responseAction>
                  </timeout>
               </http>
               <property name="Authorization"
                         value="Bearer aaa4663b5851e06f2f1bc6e871fd20b7"
                         scope="axis2"/>
            </endpoint>
         </send>
      </inSequence>
      <outSequence>
         <log level="full"/>
      </outSequence>
   </target>
   <description/>
</proxy>

但是,當我嘗試這樣做時,它會給org.apache.axis2.AxisFault: Read timed out並在服務器中

[2015-03-20 08:50:48,481]  INFO - LogMediator To: /services/a.aHttpSoap12Endpoint, WSAction: urn:mediate, SOAPAction: urn:mediate, MessageID: urn:uuid:ce224d0e-f158-458c-b0be-ffeb09198e47, Direction: request, Envelope: <?xml version="1.0" encoding="utf-8"?><soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"><soapenv:Body></soapenv:Body></soapenv:Envelope>
[2015-03-20 08:50:48,500]  INFO - TimeoutHandler This engine will expire all callbacks after : 120 seconds, irrespective of the timeout action, after the specified or optional timeout


[2015-03-20 08:50:49,289] ERROR - TargetHandler I/O error: Host name verification failed for host : {ip}
javax.net.ssl.SSLException: Host name verification failed for host : 52.74.66.119
        at org.apache.synapse.transport.http.conn.ClientSSLSetupHandler.verify(ClientSSLSetupHandler.java:152)
        at org.apache.http.nio.reactor.ssl.SSLIOSession.doHandshake(SSLIOSession.java:285)
        at org.apache.http.nio.reactor.ssl.SSLIOSession.isAppInputReady(SSLIOSession.java:380)
        at org.apache.http.impl.nio.reactor.AbstractIODispatch.inputReady(AbstractIODispatch.java:118)
        at org.apache.http.impl.nio.reactor.BaseIOReactor.readable(BaseIOReactor.java:160)
        at org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvent(AbstractIOReactor.java:342)
        at org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvents(AbstractIOReactor.java:320)
        at org.apache.http.impl.nio.reactor.AbstractIOReactor.execute(AbstractIOReactor.java:280)
        at org.apache.http.impl.nio.reactor.BaseIOReactor.execute(BaseIOReactor.java:106)
        at org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run(AbstractMultiworkerIOReactor.java:604)
        at java.lang.Thread.run(Unknown Source)
[2015-03-20 08:50:49,320]  WARN - EndpointContext Endpoint : AnonymousEndpoint will be marked SUSPENDED as it failed
[2015-03-20 08:50:49,320]  WARN - EndpointContext Suspending endpoint : AnonymousEndpoint - current suspend duration is : 30000ms - Next retry after : Fri Mar 20 08:51:19 UTC 2015

我可以使用Chrome Advanced Rest Client調用API。 因此,通過代理服務調用此函數時我做錯了什么?

如果您的API期待一個REST / JSON消息,在您的代理(WSO2 ESB)你應該添加<property name="messageType" value="application/json" scope="axis2" type="STRING"/>之前的<send> 如果您的API需要REST / XML,請使用application/xml

問候。

對於“主機名驗證失敗的主機”異常,請嘗試在wso2.org/jira/browse/APIMANAGER-2089中建議的配置

而且,在您的代理服務中,您必須使用標頭介體來設置授權標頭。

<header name="Authorization" value="xxxxxx" scope="transport"/>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM