Не могу получить ответ HTTP от Mule

Я создаю базовый компонент службы, который принимает URL-адрес в качестве входного сигнала на входящей конечной точке http. Фрагмент кода из файла 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;
    }

Я хочу получить HTTP-ответ (полезную нагрузку), нажав сервис через CURL как:

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 ответа

Решение

Неважно, ребята. Я кое-что понял, и теперь он работает нормально. есть атрибут syncResponse для входящей конечной точки. Если установить значение true, оно будет работать синхронно. Я думаю, что какая-то проблема связана с Mule 2.1.2 или, возможно, с некоторыми настройками системы.

Вы намеренно используете такую ​​старую версию мула? Доступна гораздо более новая версия 3.2.1. И я предлагаю вам перейти к обмену сообщениями в стиле потока вместо служб.

Но чтобы ответить на вашу проблему, если вы хотите, чтобы распечатка содержала ответную нагрузку, вам следует добавить строковый преобразователь в вашу конфигурацию. Я не помню точно, как настроить это для элемента службы, но если вы используете поток, то вы можете добавить блок ответа в конец потока.

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

Надеюсь, это поможет.

Другие вопросы по тегам