Я создаю по существу прокси-сервер RESTful через прокси-сервер для ресурса сервера служб данных WSO2.Send Mediator Игнорирует данные HTTP-запроса (отправляет только заголовки!)
Я хотел бы послать следующий запрос к ESB ...
PUT /crm/contacts/267
... С данными ...
<contacts>
<firstname>John</firstname>
</contacts>
... так что контакт 267 первыми имя обновляется.
Я использую посредник сценария, чтобы получить идентификатор контакта и добавить его в XML-запрос в потоке медиации InSequence (так как это необходимо для создания Data Services Server). Затем я пытаюсь отправить запрос на сервер служб данных с использованием конечной точки HTTP.
Вот моя конфигурация API в качестве справки:
<api xmlns="http://ws.apache.org/ns/synapse" name="CRM" context="/crm">
<resource methods="PUT" uri-template="/contacts/{cid}">
<inSequence>
<script language="js"><![CDATA[ var request= mc.getPayloadXML(); var id = mc.getProperty('uri.var.cid'); var child = <id>{id}</id>; request.appendChild(child);mc.setPayloadXML(request); ]]></script>
<property name="messageType" value="application/xml" scope="axis2"/>
<property name="REST_URL_POSTFIX" scope="axis2" action="remove"/>
<send>
<endpoint>
<http method="put" uri-template="http://requestb.in/1h6werc1" />
</endpoint>
</send>
<log level="full" xmlns="http://ws.apache.org/ns/synapse"/>
</inSequence>
<outSequence>
<send/>
</outSequence>
</resource>
</api>
Примечания: что конечная точка, указанная здесь, не мой DSS конечной точки, это просто запрос бен я использую для проверки выхода из API.
Таким образом, основная проблема заключается в том, что когда я проверяю Request Bin, я получаю запрос, но нет тела запроса. Если я изменил URL-адрес бина запроса на конечную точку DSS, источник данных не будет обновлен. Я могу напрямую обновить источник данных, используя ресурс DSS, так что он работает нормально.
Если есть указатели, вы можете дать мне эту работу, которая была бы высоко оценена!
Спасибо,
Strainy
Являются ли транспортные средства NIO действительными для HTTP и HTTPS?) Включены в стандартную комплектацию? Не знаете, как сказать, использую ли я его. – Strainy
в стандарте, WSO2 ESB 4.8.1 использовать PassThrough транспорт. Чтобы включить NIO, переименуйте репозиторий/conf/axis2/axis2_nhttp.xml в репозиторий/conf/axis2/axis2.xml. Я просто хотел указать, что я использую NIO, но я не знаю, изменит ли это что-нибудь. –
Спасибо, Jean-Michel. Переключен транспорт от PassThrough к NIO, теперь все работает нормально. Не могли бы вы рассказать мне что-нибудь (или направить мне какую-то информацию) о различии между транспортом? Какое влияние это может оказать на ESB? – Strainy