Отправка запроса POST в ESB

Я пытаюсь создать коннектор пользовательского поиска Google для WSO2 ESB. После создания коннектора я добавил коннектор в ESB. Тогда я хочу это проверить.

Мой тестовый файл инициализации выглядит так:

<template name="listVolume" xmlns="http://ws.apache.org/ns/synapse">
    <parameter name="apiKey" description="Full-text search query string." />
    <parameter name="csiKey" description="Full-text search query string." />
    <parameter name="searchPara" description="Full-text search query string." />
    <sequence>
    <property name="uri.var.apiKey" expression="$func:apiKey" />
    <property name="uri.var.csiKey" expression="$func:csiKey" />
    <property name="uri.var.searchPara" expression="$func:searchPara" />
    <call>
        <endpoint>
            <http method="get"
                  uri-template="https://www.googleapis.com/customsearch/v1?key={uri.var.apiKey}&amp;cx={uri.var.csiKey}&amp;q={uri.var.searchPara}" />
        </endpoint>
    </call>
    </sequence>
</template>

После того, как я настроил собственный прокси-сервис в ESB следующим образом:

<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
       name="googlecustomsearch_list"
       transports="https,http"
       statistics="disable"
       trace="disable"
       startOnLoad="true">
   <target>
      <inSequence>
     <property name="apiKey" expression="json-eval($.apiKey)"/>
     <property name="csiKey" expression="json-eval($.csiKey)"/>
     <property name="searchPara" expression="json-eval($.searchPara)"/>
     <googleCustomSearch.listSearch>
        <apiKey>{$ctx:apiKey}</apiKey>
        <csiKey>{$ctx:csiKey}</csiKey>
        <searchPara>{$ctx:searchPara}</searchPara>
     </googleCustomSearch.listSearch>
     <respond/>
      </inSequence>
      <outSequence>
     <log/>
     <send/>
      </outSequence>
   </target>
   <description/>
</proxy>

Затем я тестирую его в REST-клиенте следующим образом:

POST http://nilash-TECRA-M11:8280/services/googlecustomsearch_list

{
"apiKey":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
 "csiKey":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
 "searchPara":"google"
}

Тогда я получаю такой результат:

Status Code: 202 Accepted
Connection: keep-alive
Date: Sat, 14 Jun 2014 05:22:34 GMT
Server: WSO2-PassThrough-HTTP
Transfer-Encoding: chunked

Но результаты поиска не появятся. Я перечислил эту ошибку в консоли ниже.

ERROR - SynapseJsonPath #stringValueOf. Error evaluating JSON Path <$.apiKey>. Returning  empty result. Error>>> invalid path
[2014-06-14 10:52:34,883] ERROR - SynapseJsonPath #stringValueOf. Error evaluating JSON  Path <$.csiKey>. Returning empty result. Error>>> invalid path
[2014-06-14 10:52:34,884] ERROR - SynapseJsonPath #stringValueOf. Error evaluating JSON Path <$.searchPara>. Returning empty result. Error>>> invalid path

Но если я помещу ключи API Google прямо в свою конфигурацию в файле инициализации, как это, я могу получить ожидаемые результаты.

 <http method="get" uri-template="https://www.googleapis.com/customsearch/v1?q={uri.var.searchQuery}&amp;key=XXXXXXXXXXXXXXXXXXX&amp;cx=XXXXXXXXXXXXXXXX"/>

В чем может быть проблема?


person nilashan    schedule 14.06.2014    source источник


Ответы (2)


кажется, у вас есть ошибка в пути JSON, измените

  <googleCustomSearch.listSearch>

to

 <googleCustomSearch.listVolume>

и попробовать. Используйте указанный ниже блог, чтобы получить дополнительную информацию.

http://chanakaindrajith.blogspot.com/2014/04/getting-started-with-wso2-esb-connectors.html

person Dakshika    schedule 15.06.2014
comment
Даже если я изменил путь, у меня появляется следующее сообщение об ошибке: {error: {errors: [1] 0: {domain: usageLimits cause: keyInvalid message: Bad Request} code: 400 message: Bad Request}} - person nilashan; 15.06.2014
comment
так что включите вашу ошибку..keyInvalid .. попробуйте с некоторыми другими учетными данными приложения developers.google.com/custom-search/json-api/v1/using_rest. - person Dakshika; 16.06.2014

Запрос JSON недействителен. вы пропустили ','

{
"apiKey":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
 "csiKey":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
 "searchPara":"google"
}

person Isuru Jayakantha    schedule 05.11.2014