Mule ESB - 如何通过HTTP POST方法调用API(发送参数)

时间:2014-02-27 11:16:39

标签: http post mule

再来一次。

我正在尝试创建一个将作业开放发布到作业门户的流程。他们通过Post方法公开他们的API。我不知道如何将值传递给HTTP端点。 这只是一个带有硬编码值的测试样本。当它工作时,我将从数据库中获取流量值。

<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:wmq="http://www.mulesoft.org/schema/mule/ee/wmq" xmlns:http="http://www.mulesoft.org/schema/mule/http" 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="EE-3.4.2"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.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
    http://www.mulesoft.org/schema/mule/ee/wmq http://www.mulesoft.org/schema/mule/ee/wmq/current/mule-wmq-ee.xsd">
        <http:connector name="HTTP_CONFIG" cookieSpec="netscape" validateConnections="false" sendBufferSize="0" receiveBufferSize="0" receiveBacklog="0" clientSoTimeout="100000" serverSoTimeout="100000" socketSoLinger="0" proxyHostname="pta-proxy.work.co.za" proxyPort="3128" doc:name="HTTP\HTTPS" />
        <flow name="career24Flow1" doc:name="career24Flow1">
            <http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8083" doc:name="HTTP" contentType="text/plain"/>       
            <message-properties-transformer  doc:name="Set the  post Values" >
                <add-message-property key="apikey" value="XXXX"/>
                <add-message-property key="integrationkey" value="567"/>
                <add-message-property key="consultantemail" value="integrations@work.com"/>
                <add-message-property key="title" value="Testing Mule API"/>
                <add-message-property key="reference" value="33175"/>
                <add-message-property key="jobtypeid" value="1"/>
                <add-message-property key="closingdate" value="01/06/2014"/>
                <add-message-property key="location" value="66"/>
                <add-message-property key="salaryfrom" value="10000.00"/>
                <add-message-property key="salaryto" value="20000.00"/>
                <add-message-property key="salaryunitid" value="4"/>
                <add-message-property key="description" value="Testing the Mule ESB to post to the portal"/>
                <add-message-property key="companyname" value="CSIR"/>
                <add-message-property key="sectorids" value="17"/>
                <add-message-property key="applicationmethodid" value="2"/>
                <add-message-property key="applicationurl" value="http://www.testing.com"/>
                <add-message-property key="package" value="2"/>
            </message-properties-transformer>
            <http:outbound-endpoint exchange-pattern="request-response" host="api.work.com" port="80" method="POST" doc:name="Post on Career24"  path="_integrations/httppost/vacancy.ashx" connector-ref="HTTP_CONFIG" contentType="application/x-www-form-urlencoded"/>

        </flow>
    </mule>

我从网站上得到了这个,所以似乎没有通过HTTP端点发送值。

ERROR:
- Field &#39;apikey&#39;, is required.
- Field &#39;integrationkey&#39;, is required.
- Field &#39;consultantemail&#39;, is required.
- Field &#39;title&#39;, is required.
- Field &#39;reference&#39;, is required.
- Field &#39;jobtypeid&#39;, is required.
- Field &#39;closingdate&#39;, is a required field.
- Field &#39;sectorids&#39;, is required.
- Field &#39;location&#39;, is required.
- Field &#39;description&#39;, is required.
- Field &#39;applicationmethodid&#39;, is required.

我也尝试了“消息到HTTP响应”转换器,但仍然没有运气。

感谢您的帮助。

问候。

雅科。

1 个答案:

答案 0 :(得分:0)

使用带有http出站端点的属性会将它们设置为http标头。相反,您需要Map类型的有效负载将它们设置为POST变量。

像这样:

<set-payload value="#[['xxx':'yyy']]"/>