gpt4 book ai didi

java - 如何用 Java 向 Octoprint 发送 POST 请求?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:21:23 24 4
gpt4 key购买 nike

我想通过 Apache HttpClient 向 Octoprint API 发送一个 POST 请求,如下所示:http://docs.octoprint.org/en/master/api/job.html#issue-a-job-command (例如开始工作)。我已经阅读了两者的文档,但仍然得到“Bad Request”作为答案。

尝试了其他几个 Post 请求,但从未得到其他东西。猜猜我以某种方式写错了请求。

CloseableHttpClient posterClient = HttpClients.createDefault();
HttpPost post = new HttpPost("http://localhost:5000/api/job");
post.setHeader("Host", "http://localhost:5000");
post.setHeader("Content-type", "application/json");

post.setHeader("X-Api-Key", "020368233D624EEE8029991AE80A729B");

List<NameValuePair> content = new ArrayList<NameValuePair>();
content.add(new BasicNameValuePair("command", "start"));



post.setEntity(new UrlEncodedFormEntity(content));
CloseableHttpResponse answer = posterClient.execute(post);

System.out.println(answer.getStatusLine());

最佳答案

可能内容类型有误。根据文档 here ,期望主体采用 JSON 格式。另一方面,您的代码根据这段代码使用 application/x-www-form-urlencoded post.setEntity(new UrlEncodedFormEntity(content));

快速修复,进行以下更改并尝试:

    String json= "{\"command\":\"start\"}";

//This will change change you BasicNameValuePair to an Entity with the correct Content Type
StringEntity entity = new StringEntity(json,ContentType.APPLICATION_JSON);
//Now you just set it to the body of your post
post.setEntity(entity);

您可能想要查看您是如何创建帖子内容的。以上只是为了让您检查问题是否确实与内容类型有关。

让我们知道结果。

关于java - 如何用 Java 向 Octoprint 发送 POST 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57207309/

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