2015-03-20 5 views
0

я опубликовала API в WSO2AM и URL показано в магазине является https://{ip}:8243/phoneverify/1.0.0Как Invoke API в WSO2_AM от службы WSO2_ESB Proxy

Теперь то, что я пытаюсь сделать, это вызвать это от службы 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 

Я мог бы использовать API, используя Chrome Advanced Rest Client. Поэтому что я делаю неправильно, вызывая это через прокси-сервис?

+0

Что такое '/ services/TesAM'? также может заменить '{ip}' для реального значения и удалить '' просто для тестирования. Включите Tcpmon, чтобы проверить сообщение исходящего запроса WSO2 ESB на WSO2 AM. – Chilcano

+0

Извините за ошибку, журнал исправлен, {ip} намеренно заменит оригинал –

+0

А, почему '' находится внутри ' '?, Должно быть между' 'и' ', no ?. – Chilcano

ответ

0

Если ваш API ожидает сообщение REST/JSon, в вашем прокси (WSO2 ESB) вы должны добавить <property name="messageType" value="application/json" scope="axis2" type="STRING"/> до <send>. Если ваш API ожидает REST/XML, используйте application/xml.

С уважением.

0

Для «Host имя проверки не удалось для хоста» исключение, пожалуйста, попробуйте конфиг предложенный в wso2.org/jira/browse/APIMANAGER-2089

А также, в вашем прокси-сервис, вы должны использовать медиатор заголовка для настройки заголовка авторизации.

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

Привет, Sajith и Isuru, '

' и '<имя свойства =" Авторизация "значение =" Знак переноса xyz "scope =" транспорт "/>' являются правильными. Для получения информации, проверьте это [ссылка] (http://nuwanwimalasekara.blogspot.co.uk/2014/03/how-to-add-http-basic-authentication.html). – Chilcano