1

我有一个带有 HTTP 端点的流,它期望“text/xml”作为内容类型。当我使用 RESTClient 之类的东西来点击它时,这个流程可以正常工作。

<http:inbound-endpoint exchange-pattern="request-response" host="${web.rsc.host}" port="${web.rsc.port}" path="Quote/1_0/submit" doc:name="HTTP" mimeType="text/xml"/>

但是,我无法让 JUnit 测试正常工作。

测试的精简版本如下所示:

@Test 
public void test5() throws MuleException
{
    MuleClient client = muleContext.getClient();

    MuleMessage message = new DefaultMuleMessage( "", muleContext );

    String payload = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><quote><value>dummy</value></quote>";
    message.setProperty( "http.method", "POST", PropertyScope.OUTBOUND );
    message.setProperty( "http.content-type", "text/xml", PropertyScope.OUTBOUND );
    message.setPayload( payload );

    MuleMessage reply = client.send( "http://localhost:8081/Quote/1_0/submit", message, null, 5000 );

    assertNotNull( reply );
    assertNotNull( reply.getPayload() );
    assertEquals( reply.getPayload(), "200" );
}

当它运行时,Mule 在入站端点上抛出异常:“消息包含 MIME 类型“text/plain”,而预期为“text/xml”。”

在测试消息上设置内容类型需要什么?

4

2 回答 2

1

创建一个HashMap属性

Map<String, String> properties = new HashMap<String, String>();
properties.add("Content-Type", "text/xml");

并将其放入client.send

MuleMessage reply = client.send( "http://localhost:8081/Quote/1_0/submit", payload, properties);
于 2013-02-14T15:34:58.490 回答
0

试试这个。

 message.setProperty("Content-Type", "text/xml", PropertyScope.OUTBOUND );
于 2013-02-15T14:28:46.937 回答