ant的get任务抛出IOException

时间:2016-06-17 01:43:11

标签: java ant ioexception

我正在设置一个ant任务来轮询我的应用程序的端点以获取健康状态,这个任务的输出应该只显示来自端点的json输出,这是我试过的

<target name="status">

    <get src="http://127.0.0.1:8840/-/system/get_health" dest="${dir.tmp}/status" />
    <loadfile property="status" srcFile="${dir.tmp}/status" />
    <echo message="${status}" />
</target>

以上内容在get

上引发了以下错误
  

[get]获取:http://127.0.0.1:8840/-/system/get_health
  [get] To:C:\ path \ to \ build \ tmp \ status
  [get]打开连接时出错java.io.IOException:无效的Http响应
  [get]无法获得http://127.0.0.1:8840/-/system/get_health到C:\ path \到\ build \ tmp \ status

get期待回归的格式究竟是什么?

据我所知,这是纯文本输出,没有标题。

我可以使用curl和chrome来查看输出。

$curl http://127.0.0.1:8840/-/system/get_health
{"status": "HEALTHY"}

有没有办法忽略此错误并保存输出?还是有另一种方法可以做到这一点吗?

修改

使用

运行
$ant status -debug
除了已发布的内容之外,

没有提供有用的输出。

$curl -v http://127.0.0.1:8840/-/system/get_health
* STATE: INIT => CONNECT handle 0x6000578b0; line 1108 (connection #-5000)
* Added connection 0. The cache now contains 1 members
*   Trying 127.0.0.1...
* STATE: CONNECT => WAITCONNECT handle 0x6000578b0; line 1161 (connection #0)
* Connected to 127.0.0.1 (127.0.0.1) port 8840 (#0)
* STATE: WAITCONNECT => SENDPROTOCONNECT handle 0x6000578b0; line 1260 (connection #0)
* STATE: SENDPROTOCONNECT => DO handle 0x6000578b0; line 1278 (connection #0)
> GET /-/system/get_health HTTP/1.1
> Host: 127.0.0.1:8840
> User-Agent: curl/7.48.0
> Accept: */*
>
* STATE: DO => DO_DONE handle 0x6000578b0; line 1357 (connection #0)
* STATE: DO_DONE => WAITPERFORM handle 0x6000578b0; line 1484 (connection #0)
* STATE: WAITPERFORM => PERFORM handle 0x6000578b0; line 1494 (connection #0)
* Increasing bytecount by 23 from hbuflen
{"status": "HEALTHY"}
* nread <= 0, server closed connection, bailing
* STATE: PERFORM => DONE handle 0x6000578b0; line 1652 (connection #0)
* Curl_done
* Connection #0 to host 127.0.0.1 left intact
* Expire cleared

2 个答案:

答案 0 :(得分:0)

尝试查看here。这可能是因为返回值中的特殊字符。字符串需要编码。

答案 1 :(得分:0)

有趣的是,这是我正在使用的Web套接字处理程序中的执行不佳,因为它实际上从未在响应中返回状态行。

我不得不使用netcat来查看来自服务器的原始数据:

$ echo -e "GET /-/system/get_health HTTP/1.1\n\n" | nc 127.0.0.1 8840
HTTP/1.1 200 OK

{"status": "HEALTHY"}
$

是不是应该适合适当的HTTP规范

{{1}}

这很奇怪,铬和卷曲似乎都盲目地忽略了它。

修复后,ant解析响应没有问题。