无法从Mule接收HTTP响应

时间:2011-12-27 10:39:52

标签: java http mule

我正在创建一个基本服务组件,该组件在 http入站端点中将URL作为输入。 mule-config文件中的代码片段如下:

    <service name="follow">
        <inbound>
            <http:inbound-endpoint address="http://localhost:8765/follow/" synchronous="true"/>
        </inbound>
        <component class="org.mule.application.mytwitter.Follow" />
    </service>

并且从Java组件类调用的函数是:

    public Object onCall(MuleEventContext eventContext) throws Exception {
        MuleMessage msg = eventContext.getMessage();
        String str = msg.getStringProperty("http.request", null);

        msg.setPayload(str);
        msg.setStringProperty("http.status","200");
        msg.setStringProperty("Content-Type","text/html");
        System.out.println("Reached here:" + str);
        return msg;
    }

我希望通过CURL将服务命中为:

来接收HTTP响应(有效负载)
  

curl -vv“http:// localhost:8765 / follow /”

但我没有收到任何有效载荷:

> * About to connect() to localhost port 8765 (#0)
*   Trying ::1... connected
* Connected to localhost (::1) port 8765 (#0)
> GET /follow/ HTTP/1.1
> User-Agent: curl/7.19.7 (x86_64-pc-linux-gnu) libcurl/7.19.7 OpenSSL/0.9.8k zlib/1.2.3.3 libidn/1.15
> Host: localhost:8765
> Accept: */*
> 
    < HTTP/1.1 200 OK
< Content-Type: text/plain
< Date: Tue, 27 Dec 2011 03:14:00 IST
< Server: Mule Core/2.1.2
< Expires: Tue, 27 Dec 2011 03:14:00 IST
< Content-Length: 0
< Connection: close
< 
* Closing connection #0

我错过了什么吗?正在调用组件类中的函数,并在控制台中打印输出。

2 个答案:

答案 0 :(得分:1)

你是否故意使用这样一个旧版本的骡子?有一个更新的3.2.1版本可用。我建议你转向流式消息而不是服务。

但要回答您的问题,如果您想要打印出响应有效负载,那么您应该为您的配置添加字符串转换器。我不记得具体如何将其配置到service元素,但是如果使用flow,则可以在流程的末尾添加响应块。

<http:http-response-to-string-transformer />

我希望这会有所帮助。

答案 1 :(得分:0)

不要介意男人们。我想出了一些东西,现在工作正常。 inbound-endpoint 有一个名为 syncResponse 的属性。将其设置为 true 可使其同步工作。我认为与Mule 2.1.2或某些系统设置有关的问题。