2

リクエスト本文で JSON を使用して HTTP POST を実行する方法を理解するのに苦労しています。私のフローのサンプルを以下に掲載します。ポーリング時に JSON を生成する POJO をポーリングするポーラーがあります。次に、この JSON を取得し、HTTP POST を本文に入れて外部 REST サービスに送信する必要があります。Apache HTTP クライアントに相当するのは、文字列エンティティを JSON メッセージに設定し、ヘッダーのコンテンツ タイプを application/json に設定することです。Mule でこれを行うにはどうすればよいですか? よろしくお願いします。

<flow name="flow1" doc:name="flow1">
    <poll frequency="100000">
        <logger message="starting" level="INFO" doc:name="Logger"/>
    </poll>
    <component class="JavaJSONGeneratorClass" doc:name="ReferenceToJavaClass"/>
    <echo-component doc:name="Echo"/>
    <http:outbound-endpoint exchange-pattern="request-response" host="xxx.xxx.xxx.xxx" port="8080" path="path/to/service" doc:name="HTTP"/>
    <logger level="INFO" doc:name="Logger"/>
    <byte-array-to-string-transformer doc:name="Byte Array to String"/>
    <echo-component doc:name="Echo"/>
</flow>

Java クラスは次のようになります。

import java.io.Serializable;

import org.mule.api.MuleEventContext;
import org.mule.api.MuleMessage;
import org.mule.api.lifecycle.Callable;
import org.mule.module.client.MuleClient;

public class JSONGenerator implements Callable, Serializable 
{

@Override
public Object onCall(MuleEventContext eventContext) throws Exception 
{

    String json = generateSomeJson(some_parameter);

    return json;
}

}

4

2 に答える 2

2

おそらく、contentType属性をhttpアウトバウンドエンドポイントに設定するのを忘れているだけです。これは次のようになります。

<http:outbound-endpoint exchange-pattern="request-response" host="xxx.xxx.xxx.xxx" port="8080" path="path/to/service" doc:name="HTTP" contentType="application/json"/>

また、ラバには、object-to-json-transformerや EEバージョンのDataMapperなどのJson用のOOTBソリューションが付属しているため、可能な限り、カスタムソリューションではなく、いずれかを使用することをお勧めします。

于 2012-09-26T20:36:11.673 に答える
1

http メソッドがありません。これを試してください:

<http:outbound-endpoint exchange-pattern="request-response" host="xxx.xxx.xxx.xxx" port="8080" path="path/to/service" doc:name="HTTP" method="POST"/>

于 2012-09-27T17:02:36.153 に答える