2

そこで、Mule ESBを使用して、Bingで特定のPDFファイルを検索しています。次に、JSON応答を解析して、ファイルの場所のURLをキャプチャします。次に、ファイルを取得してローカルに保存する必要があります。以下は私がこれまでに持っているものですが、私はこれについてすべて間違っていると感じています。ユースケースを完了するにはどうすればよいですか?

私は2つの問題を抱えています:

1)#[message.payload.Url]から「http」を削除する方法がわかりません(HTTPエンドポイントが渡したURLにhttpを追加するためです。

2)ファイルを取得する方法がわかりません。HTTPエンドポイントが正しいオプションかどうかさえわかりません。HTTP?ファイル?

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

<mule xmlns:file="http://www.mulesoft.org/schema/mule/file" xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns:json="http://www.mulesoft.org/schema/mule/json" xmlns:https="http://www.mulesoft.org/schema/mule/https" 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" version="CE-3.3.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="
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 
http://www.mulesoft.org/schema/mule/https http://www.mulesoft.org/schema/mule/https/current/mule-https.xsd 
http://www.mulesoft.org/schema/mule/file http://www.mulesoft.org/schema/mule/file/current/mule-file.xsd 
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 ">
    <flow name="BingFlow1" doc:name="BingFlow1">
        <http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8081" doc:name="HTTP"/>
        <https:outbound-endpoint exchange-pattern="request-response" host="api.datamarket.azure.com" port="443" path="Data.ashx/Bing/Search/v1/Web?Query=%27contract%20california%27&amp;WebFileType=%27PDF%27&amp;$top=50&amp;$format=Json" user="********" password="*****" doc:name="Bing"/>
        <json:json-to-object-transformer returnClass="java.util.Map" doc:name="JSON to Object"/>
        <expression-transformer expression="#[message.payload.d.results]" doc:name="Expression"/>
        <collection-splitter doc:name="Collection Splitter"/>
        <http:outbound-endpoint exchange-pattern="request-response" host="#[message.payload.Url]" port="80" method="GET" doc:name="HTTP"/>
        <file:outbound-endpoint path="/home/user/Documents/output" outputPattern="#[message.payload.ID].pdf" responseTimeout="10000" doc:name="File"/>
        <echo-component doc:name="Echo"/>
    </flow>
</mule>
4

1 に答える 1

3

いくつかの資格情報が必要なため、フローをテストできませんでしたが、次の情報が役立ちます。

  • を使用しexpression-transformerて HTTP を取り除き、
  • http:outbound-endpointa の後に aを使用したアプローチはfile:outbound-endpointうまく機能します。
  • を に変更しhttp:inbound-endpointますone-way。実行フローが分割されるため、適切なものを返す方法はありません。

たとえば、 が にmessage.payload.Url解決されると仮定するとjava.lang.String、次を使用できます。

<expression-transformer expression="#[org.mule.util.StringUtils.substringAfter(message.payload.Url, 'http://')]" doc:name="Expression"/>
于 2012-10-18T00:42:00.773 に答える