gpt4 book ai didi

Java PUT 请求 NiFi

转载 作者:行者123 更新时间:2023-12-01 17:49:31 24 4
gpt4 key购买 nike

我在向 nifi 发送简单的 PUT 请求时遇到问题,基本上我想用 java 代码启动 nifi 处理器。

错误消息 - 服务器返回 HTTP 响应代码:405,URL:http://localhost:8080/nifi-api/processors/

我应该采取什么步骤来解决此 405 问题? nifi api 网站提供了有关 Rest api 的高级文档,但没有关于如何使用 Java 向 NiFi 发出正确的 PUT 请求的指南。

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

import javax.net.ssl.HttpsURLConnection;

public class HttpURLConnectionExample {

private final String USER_AGENT = "Mozilla/5.0";

public static void main(String[] args) throws Exception {

HttpURLConnectionExample http = new HttpURLConnectionExample();

System.out.println("\nTesting 2 - Send Http POST request");
http.sendPut();

}

// HTTP PUT request
private void sendPut() throws Exception {

String url = "http://localhost:8080/nifi-api/processors/";
URL obj = new URL(url);
HttpURLConnection con = (HttpURLConnection) obj.openConnection();

//add reuqest header
con.setRequestMethod("PUT");
con.setRequestProperty("Content-Type", "application/json");
con.setRequestProperty("Accept", "application/json");
con.setRequestProperty("text/javascript", "*/*");

String urlParameters = "{\r\n" +
" \"status\": {\r\n" +
" \"runStatus\": \"RUNNING\"\r\n" +
" },\r\n" +
" \"component\": {\r\n" +
" \"state\": \"RUNNING\",\r\n" +
" \"id\": \"749b3133-0162-1000-9acc-f384457b160c\"\r\n" +
" },\r\n" +
" \"id\": \"749b3133-0162-1000-9acc-f384457b160c\",\r\n" +
" \"revisions\": {\r\n" +
" \"version\": 1,\r\n" +
" \"clientId\": \"550c4b84-0165-1000-37be-724ed17b5329\"\r\n" +
"}\r\n" +
" ";

// Send post request

con.setDoOutput(true);
DataOutputStream wr = new DataOutputStream(con.getOutputStream());
wr.writeBytes(urlParameters);
wr.flush();
wr.close();

int responseCode = con.getResponseCode();
System.out.println("\nSending 'POST' request to URL : " + url);
System.out.println("Post parameters : " + urlParameters);
System.out.println("Response Code : " + responseCode);

BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();

while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();

//print result
System.out.println(response.toString());

}

}

最佳答案

405 表示所使用的 URL 不支持 HTTP 方法(在本例中为 PUT)。这是因为/processors 仅支持 GET 请求来检索可用的处理器。为了更新处理器,URL 将是/processors/{processorId},其中 processId 被替换为您想要更新的给定处理器 ID。

一般来说,学习 NiFi 的 REST API 的最佳方法是打开 Chrome 的开发工具等工具,然后查看网络以查看从 UI 执行所需操作时发出的请求。这些将向您显示 URL、参数和请求/响应正文。

更新

以下是启动 UpdateAttribute 处理器时 UI 发送的内容,该处理器将 PUT 发送到 http://localhost:8080/nifi-api/processors/5817008a-0165-1000-0bf3-2c44fde14c37

{
"revision":{
"clientId":"61a9ab71-0165-1000-777c-c7538789246c",
"version":0
},
"component":{
"id":"5817008a-0165-1000-0bf3-2c44fde14c37",
"state":"RUNNING"
},
"disconnectedNodeAcknowledged":false
}

以下是 Chrome 开发工具中显示的请求: enter image description here

关于Java PUT 请求 NiFi,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51940404/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com