2016-09-26 9 views
0

Я хочу написать приложение mule, которое будет читать базу данных для необработанных записей, соединить их в формате полезной нагрузки JSON и затем нажать на веб-сервис REST. Я могу читать записи из базы данных и преобразовывать записи базы данных в JSON. Тем не менее, всякий раз, когда я запустить приложение я получаю следующее исключениеMule - java.lang.String не может быть отнесено к java.util.Map

java.lang.ClassCastException: java.lang.String не может быть приведен к java.util.Map

Вот мой Mule конфигурации XML

<?xml version="1.0" encoding="UTF-8"?> 

<mule xmlns:db="http://www.mulesoft.org/schema/mule/db" xmlns:json="http://www.mulesoft.org/schema/mule/json" xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" 
    xmlns:spring="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd 
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd 
http://www.mulesoft.org/schema/mule/db http://www.mulesoft.org/schema/mule/db/current/mule-db.xsd 
http://www.mulesoft.org/schema/mule/json http://www.mulesoft.org/schema/mule/json/current/mule-json.xsd 
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd"> 
    <db:mysql-config name="MySQL_Configuration" host="localhost" port="3306" user="root" database="my_database_name" doc:name="MySQL Configuration"/> 
    <http:request-config name="HTTP_Request_Configuration" protocol="HTTPS" host="example.net" port="8000" basePath="API" doc:name="HTTP Request Configuration"/> 
    <flow name="cwg_clientFlow"> 
     <poll doc:name="Poll"> 
      <db:select config-ref="MySQL_Configuration" doc:name="Database"> 
       <db:parameterized-query><![CDATA[SELECT * FROM cwg_ws_data WHERE SyncFlag = 0]]></db:parameterized-query> 
      </db:select> 
     </poll> 
     <logger message="#[payload]" level="INFO" doc:name="Logger"/> 
     <json:object-to-json-transformer doc:name="Object to JSON" /> 
     <logger message="JSON Payload is #[payload]" level="INFO" doc:name="Logger"/> 
     <http:request config-ref="HTTP_Request_Configuration" path="/cwg" method="POST" doc:name="HTTP"> 
      <http:request-builder> 
       <http:query-params expression="#[payload]"/> 
       <http:header headerName="access_token" value="MQTgpMUmyQLt134maB6vPp6oWFgMtGsqzIlpCN74"/> 
      </http:request-builder> 
     </http:request> 
     <logger message="webservice response #[payload]" level="INFO" doc:name="Logger"/> 
    </flow> 
</mule> 

Я не могу понять, где это происходит Неправильно

Пожалуйста, помогите мне, я пробую это за последние 2 дня.

Заранее спасибо

-Paresh ([email protected])

+0

Похоже, вы используете полезную нагрузку в качестве параметров запроса для запроса HTTP, но для того, чтобы установить их в качестве выражения, они должны быть карты (ключа запроса/значение запроса) , Вот что такое ошибка кастинга. Что вам действительно нужно в качестве параметров запроса? – afelisatti

+0

Webservice ожидает полезную нагрузку в формате JSON, так как я конвертирую строки базы данных в формате JSON и пытаюсь передать этот JSON в webservice. –

+0

Тогда вам не нужны параметры запроса. – afelisatti

ответ

1

Попробуйте удалить эту строку.

<http:query-params expression="#[payload]"/> 

Должно работать. Поскольку ваша полезная нагрузка - Json String, и вы пытаетесь сопоставить ее с параметрами Query, которые ожидают Map. Также для POST ваша полезная нагрузка будет преобразована в тело.

+0

Большое спасибо. Это сработало для меня :) Однако в качестве исключения я получаю «Код ответа 401, отображаемый как сбой», но я могу взять его оттуда. Спасибо ... –

0

выражение в параметрах запроса должно быть картой. Если вы собираетесь передавать данные в качестве параметров запроса, почему вы делаете объект json? Попробуйте удалить ниже двух линий -

<json:object-to-json-transformer doc:name="Object to JSON" /> 
     <logger message="JSON Payload is #[payload]" level="INFO" doc:name="Logger"/> 
+0

REST weebservice ожидает полезную нагрузку в формате JSON, так как я конвертирую записи из базы данных в JSON. –

+0

Хорошо, в этом случае вам следует удалить параметры запроса, например, @anupambhusari. –

 Смежные вопросы

  • Нет связанных вопросов^_^