[英]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.