如何使用 ant exec 任务调用 curl 并将消息 POST 到 rest api



创建了一个 Ant 任务来发出 curl post 请求:

<target name="invoke-curl" description="Invoke curl using Ant">
    <exec executable="curl">
        <arg value="-kiv" />
        <arg value="-X POST" />
        <arg value="-H 'Accept: application/json'" />
        <arg value="-H 'Content-Type: application/json'" />        
        <arg value="-d" />
        <arg value="&apos;{&quot;username&quot;:&quot;xyz&quot;,&quot;password&quot;:&quot;XYZ&quot;}&apos;" />
        <arg value="https://hostname:8443/rest/api/login" />        
    </exec>
</target>

有趣的是,API仅支持"内容类型:应用程序/json"。但是curl似乎除了作为参数发送到Curl的标头之外,还添加了"Content-Type: application/x-www-form-urlencoded"。API 似乎不喜欢这样,并返回"

User-Agent: curl/7.51.0
Accept: */*
 'Accept: application/json'
 'Content-Type: application/json'
Content-Length: 52
Content-Type: application/x-www-form-urlencoded

虽然它很旧,但您可以尝试例如:

<exec executable="curl">
    <arg value="-kiv" />
    <arg value="-X" />
    <arg value="POST"/>
    <arg value="-H" />
    <arg value="Accept: application/json" />
    <arg value="http://localhost:${diagnose.management.port}/manage/shutdown" />
</exec>

这将按如下方式执行: curl -kiv -X POST -H "Accept: application/json" "http://localhost:${diagnose.management.port}/manage/shutdown"

请注意:如果每个 arg 值包含空格,则似乎在结果中添加了一个双引号。

参考: https://ant.apache.org/manual/using.html#arg

更改代码,如下所示

<target name="invoke-curl" description="Invoke curl using Ant">
        <exec executable="curl">
            <arg value="-kiv" />
            <arg value="-X POST" />
            <arg value="-H" />
            <arg value="Accept: application/json" />
            <arg value="-H" />
            <arg value="Content-Type: application/json" />        
            <arg value="-d" />
            <arg value="&apos;{&quot;username&quot;:&quot;xyz&quot;,&quot;password&quot;:&quot;XYZ&quot;}&apos;" />
            <arg value="https://hostname:8443/rest/api/login" />        
        </exec>
    </target>

许多平台默认没有安装 curl。要跨平台,自定义蚂蚁任务会更好。要么使用 contrib 中的 HTTP Post 任务,要么编写自己的任务。

相关内容

  • 没有找到相关文章

最新更新