Mule 为什么是骡子';s http:rest服务组件不支持PUT方法?

Mule 为什么是骡子';s http:rest服务组件不支持PUT方法?,mule,Mule,我想在流中调用rest服务,首先,我使用http:outbound endpoint,如下所示: <http:outbound-endpoint exchange-pattern="request-response" address="http://localhost:7081#[message.inboundProperties['http.request']]" doc:name="Call Lower REST" method="PUT"> 它抛出一个

我想在流中调用rest服务,首先,我使用http:outbound endpoint,如下所示:

<http:outbound-endpoint exchange-pattern="request-response"
            address="http://localhost:7081#[message.inboundProperties['http.request']]" doc:name="Call Lower REST" method="PUT">
它抛出一个异常:

Root Exception stack trace:
java.lang.Exception: The HTTP method or content type is unsupported!
  at org.mule.transport.http.transformers.HttpRequestBodyToParamMap.transformMessage(HttpRequestBodyToParamMap.java:56)
  at org.mule.transformer.AbstractMessageTransformer.transform(AbstractMessageTransformer.java:145)
  at org.mule.transformer.AbstractMessageTransformer.transform(AbstractMessageTransformer.java:93)
然后我阅读了一些文档,发现了http:rest服务组件,它可以调用后端rest服务,但它不支持PUT方法,文档说,我尝试了


那么,为什么这个组件不支持PUT呢?或者是否可以使用另一个组件?

它不是从出站端点抛出的。您正在使用流程中的某个地方:

<http:body-to-parameter-map-transformer doc:name="Body to Parameter Map" />

在您的配置中:-在第一个记录器之后的几行中使用它

此转换器将以名称-值对的哈希映射形式返回消息属性。此转换器使用application/x-www-form-urlencoded内容类型处理GET和POST。此转换器不支持PUT或DELETE

您正在输入XML,因此无需使用此转换器

如果您仍然需要它用于POST,那么您可以将此转换器包装在一个选项中,以便它仅用于GET和POST。例如:

  <choice doc:name="Choice">
    <when expression="#[message.inboundProperties['http.method'] == 'POST']">
      <http:body-to-parameter-map-transformer doc:name="Body to Parameter Map" />
      ...
    </when>
  </choice>

...

否则将其删除。

它不会从出站端点抛出。您正在使用流程中的某个地方:

<http:body-to-parameter-map-transformer doc:name="Body to Parameter Map" />

在您的配置中:-在第一个记录器之后的几行中使用它

此转换器将以名称-值对的哈希映射形式返回消息属性。此转换器使用application/x-www-form-urlencoded内容类型处理GET和POST。此转换器不支持PUT或DELETE

您正在输入XML,因此无需使用此转换器

如果您仍然需要它用于POST,那么您可以将此转换器包装在一个选项中,以便它仅用于GET和POST。例如:

  <choice doc:name="Choice">
    <when expression="#[message.inboundProperties['http.method'] == 'POST']">
      <http:body-to-parameter-map-transformer doc:name="Body to Parameter Map" />
      ...
    </when>
  </choice>

...

否则请将其删除。

您提出的PUT请求的主体是什么内容类型?错误是从您正在使用的HttpRequestBodyToParamMap转换器引发的,该转换器不支持PUT或DELETE。您的PUT请求是多部分表单数据吗?我不知道,我只是使用soapUI发送PUT方法。请参阅我的编辑您正在进行的PUT请求的主体是什么内容类型?错误是从您正在使用的HttpRequestBodyToParamMap转换器引发的,该转换器不支持PUT或DELETE。您的PUT请求是多部分表单数据吗?我不知道,我只是使用soapUI发送PUT方法。看我的编辑你是对的,我删除了http:body-to-parameter-map-transformer,现在一切正常了!谢谢Ryan。你说得对,我删除了http:body-to-parameter-map-transformer,现在一切正常了!谢谢你,瑞安。