2016-12-15 4 views
0

Я новичок в Mulesoft и пытаюсь отправить некоторые (четыре) параметры запроса. При тестировании с помощью SOAP UI A screen shot of what I testedКак передать строку запроса в сообщение с помощью mulesoft

Я реплицируется это в mulesoft с помощью следующей конфигурации XML

<flow name="boxintegrationFlow1"> 
    <http:listener config-ref="HTTP_Listener_Configuration1" path="*" doc:name="HTTP"/> 
    <logger message="Message: #[message.inboundProperties] Code: #[message.inboundProperties.'http.query.params'.code]" level="INFO" doc:name="Logger"/> 
    <set-property propertyName="Content-Type" value="application/x-www-form-urlencoded" doc:name="Property"/> 
    <set-variable variableName="QueryParameters" value="{'grant_type':'authorization_code', 'code':''#[message.inboundProperties.'http.query.params'.code]','client_id':'abc','client_secret':'xyz'}" doc:name="Variable" mimeType="application/x-www-form-urlencoded"/> 
    <logger message="#[flowVars.QueryParameters]" level="INFO" doc:name="Logger"/> 
    <set-payload value="#[flowVars.QueryParameters]" doc:name="PostQueryParameters"/> 
    <http:request config-ref="getToken" path="/oauth2/token" method="POST" sendBodyMode="ALWAYS" doc:name="HTTP"> 
     <http:request-builder> 
      <http:query-param paramName="grant_type" value="authorization_code"/> 
      <http:query-param paramName="code" value="#[message.inboundProperties.'http.query.params'.code]"/> 
      <http:query-param paramName="client_id" value="xyz"/> 
      <http:query-param paramName="client_secret" value="abc"/> 
     </http:request-builder> 
     <http:success-status-code-validator values="400"/> 
    </http:request> 
    <logger message="Message: #[message.outboundProperties] " level="INFO" doc:name="Logger"/> 
</flow> 

На этом я получаю сообщение об ошибке "{" ошибка ":" invalid_request " "error_description":" Недопустимый параметр или параметр grant_type отсутствует "}"

Я понимаю, что мы передаем его как строку запроса, но не можем понять, как это сделать.

Любые указатели оцениваются. Заранее спасибо!

ответ

0

Ошибка появляется, когда вы используете Mule OAuth provider или что-то в этом не так. Если это так, ваша проблема заключается не в том, что вы неправильно добавляете параметр grant_type в качестве параметра запроса, а в том, что вы отправляете идентификатор клиента и секрет в качестве параметров.

Вам необходимо отправить идентификатор клиента и секрет в качестве основного заголовка проверки подлинности. Заголовок должен иметь форму Authorization: Basic NmJlXXXXXXXXXXc0NDZlYmFhNTgzMWQ0NDRhZmNjMmE6MzJkZTE1ZDZZZZZZZZZZZkFEOEJEQUU5QkNG.

Пример использование завитка Поставщик Mule OAuth работает локально (используя имя пользователя/пароль ресурса типа гранта):

curl -i -X POST -H "Content-Type: application/x-www-form-urlencoded" -H "Authorization: Basic NmJlXXXXXXXXXXc0NDZlYmFhNTgzMWQ0NDRhZmNjMmE6MzJkZTE1ZDZZZZZZZZZZZkFEOEJEQUU5QkNGMjc4RDYK" -d "grant_type=password&username=max&password=mule" "https://localhost:10101/external/access_token" -k 
+0

его работает нормально, когда я тестирование. Там он отправляет его в качестве параметров запроса. –

+0

Вы также задаете параметры как в строке запроса, так и в теле сообщения. Вы должны делать это только в одном месте. Я знаю, что провайдер Mule OAuth даст вам сообщение об ошибке, если вы поместите его в оба места. Удалите тело и просто используйте строку запроса и наоборот. Вероятно, это ваша проблема. – Charles

+0

Благодарим вас за быстрый ответ .. как было предложено, я попытался удалить их в одном месте. –