我正在尝试使用 carte API REST 检索作业和转换列表。然而我做不到。从代码中,执行
http://...../kettle/status
时,我得到 200 代码,但是如果我尝试访问 http://...../kettle/jobs
我收到错误。
如果我执行以下命令:
wget http://cluster:cluster@localhost:8080/kettle/status
我收到以下回复:
--2023-05-25 13:38:50-- http://cluster:*password*@localhost:8080/kettle/status
Resolviendo localhost (localhost)... 127.0.0.1, ::1
Conectando con localhost (localhost)[127.0.0.1]:8080... conectado.
Petición HTTP enviada, esperando respuesta... 401 Unauthorized
Reutilizando la conexión con localhost:8080.
Petición HTTP enviada, esperando respuesta... 302 Found
Localización: http://localhost:8080/kettle/status/ [siguiendo]
--2023-05-25 13:38:50-- http://localhost:8080/kettle/status/ Reutilizando la conexión con localhost:8080.
你能猜出问题出在哪里吗? 预先感谢
回答以下问题:
我正在尝试使用 carte API REST 检索作业和转换列表。然而我做不到。从代码中,执行 http://...../kettle/status 时,我得到 200 代码,但是如果我尝试访问 http://...../kettle/jobs ,我会收到错误。
为了从 Pentaho Carte 检索作业和转换的状态,您需要使用
/kettle/jobStatus/
和 /kettle/transStatus/
REST 端点来正确获取结果。 Pentaho 文档提供了相同的必要细节。
在上述两种情况下,您都需要传递作业/转换名称或对象 ID 才能获取详细信息。
如果我执行以下命令: wget http://cluster:cluster@localhost:8080/kettle/status 我得到以下回复:
假设点菜服务器的用户名和密码正确,则生成的日志似乎是 WGET 的默认行为。 WGET 生成大量诊断信息,这些信息可能看起来像是重定向到标准输出,而错误则被推送到标准错误。 WGET 还将响应标头解释为诊断信息的一部分。因此,它将把标头信息发送到 stderr。为了解决这个问题,您可以使用arg,
-q
(安静)来抑制诊断信息。例如:
wget -q 'http://localhost:8085/kettle/status/?xml=Y' --user cluster --password cluster --output-document kettle_status
上述命令将输出重定向到文件
kettle_status
。 xml=Y
生成 Carte REST API 响应的 XML 输出。
或者,您可以使用 CURL 以 XML 格式获取水壶状态。
curl -u "cluster:cluster" -X GET 'http://localhost:8084/kettle/status/?xml=Y'