HTTP 删除与请求正文问题

2023-12-19

任何人都可以解释以下内容:

package com.foo.bar;

import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.ProtocolException;
import java.net.URL;
import org.springframework.util.FileCopyUtils;

public class ATest {

    public static void main(String[] args) throws Exception {
       try {
           final String payload = "{\"parentExecutor\":\"foo1233\"}";
           URL url = new URL("http://localhost/notes");
           final HttpURLConnection connection = (HttpURLConnection) url.openConnection();
           connection.setRequestMethod("DELETE");
           connection.setRequestProperty("Accept", "application/json");
           connection.setRequestProperty("Content-Type", "application/json");
           FileCopyUtils.copy(payload.getBytes(), connection.getOutputStream());
           connection.connect();
           final InputStream is = connection.getInputStream();
           int b = is.read();
           String result = "";
           while (b != -1) {
               result += (char) b;
               b = is.read();
           }
           System.out.println(connection.getResponseCode());
           System.out.println(result);
           is.close();
       }
       catch (final ProtocolException e) {
          e.printStackTrace();
       }
   }
}

上面的示例抛出以下异常:

java.net.ProtocolException: cannot write to a URLConnection if doOutput=false - call setDoOutput(true)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:995)
    at com.foo.bar.ATest.main(ATest.java:24)

但是,如果我添加一个电话设置DoOutput(真),抛出以下异常:

java.net.ProtocolException: HTTP method DELETE doesn't support output
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1004)
    at com.foo.bar.ATest.main(ATest.java:25)

然后,如果我更改协议http to https没有抛出异常,我从服务器返回了预期的响应代码和内容。我查看了源代码,可以跟踪调用并跟踪异常发生的位置,但为什么通过 HTTPS 发出这样的请求就可以,而不是通过 HTTP?


这是一个限制(我认为这是一个错误或至少是一个愚蠢的功能)HttpURLConnection。你至少是不是唯一的一个 https://www.google.com/search?q=%22java.net.ProtocolException%3a%20HTTP%20method%20DELETE%20doesn%27t%20support%20output%22谁在使用 REST Web 服务处理时遇到过这种情况URLConnection.

考虑使用Apache HttpComponents 客户端 http://hc.apache.org/httpcomponents-client-ga/反而。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HTTP 删除与请求正文问题 的相关文章

  • 无法在 Android 10 中创建目录

    我无法在 android 10 中创建目录 它可以在 android Oreo 之前的设备上运行 我尝试了两种创建文件夹的方法 Using File mkdir File f new File Environment getExternal
  • 添加动态数量的监听器(Spring JMS)

    我需要添加多个侦听器 如中所述application properties文件 就像下面这样 InTopics Sample QUT4 Sample T05 Sample T01 Sample JT7 注意 这个数字可以多一些 也可以少一些
  • 禁用 Eclipse Java 调试器的热代码替换 [重复]

    这个问题在这里已经有答案了 可能的重复 如何在 Eclipse 中禁用热代码替换 https stackoverflow com questions 2594408 how do i disable hot code replace in
  • 使用cameltestsupport进行Camel单元测试,模板始终为空

    我正在用 Camel 做一个简单的单元测试 我想做的就是从文件 在资源下 读取 JSON 内容 将其发送到 Java 类进行验证 这是我试图测试的路线 无论我做什么 模板 我用来发送正文 json 始终为空 这是我的代码 public cl
  • 如何使用 SimpleDateFormat 解析多种格式的日期

    我正在尝试解析文档中的一些日期 用户似乎以类似但不完全相同的格式输入了这些日期 以下是格式 9 09 9 2009 09 2009 9 1 2009 9 1 2009 尝试解析所有这些内容的最佳方法是什么 这些似乎是最常见的 但我想让我困扰
  • Spring安全“记住我”cookie在第一个请求中不可用

    我无法在登录请求后检索 Spring 记住我 cookie 但它在对受保护页面的下一个请求中工作正常 谁能告诉我怎样才能立即得到它 我在登录请求中设置了记住我的 cookie 但在 Spring 重定向回原始 受保护的 url 后无法检索它
  • Android 自定义视图不能以正确的方式处理透明度/alpha

    我正在绘制自定义视图 在此视图中 我使用两个不同的绘画和路径对象在画布上绘画 我基本上是在绘制两个重叠的形状 添加 Alpha 后 视图中重叠的部分比图像的其余部分更暗 这是不希望的 但我不知道如何解决它 这是我的代码片段 用于展示我如何在
  • Java套接字:在连接被拒绝异常时重试的最佳方法?

    现在我正在这样做 while true try SocketAddress sockaddr new InetSocketAddress ivDestIP ivDestPort downloadSock new Socket downloa
  • 在java中实现你自己的阻塞队列

    我知道这个问题之前已经被问过并回答过很多次了 但我只是无法根据互联网上找到的示例找出窍门 例如this http tutorials jenkov com java concurrency blocking queues html or t
  • Java:正则表达式排除空值

    在问题中here https stackoverflow com questions 51359056 java regexp for a separated group of digits 我得到了正则表达式来匹配 1 到 99 之间的一
  • 列表应该如何转换为具体的实现?

    假设我正在使用一个我不知道源代码的库 它有一个返回列表的方法 如下所示 public List
  • 获取给定类文件的目录路径

    我遇到的代码尝试从类本身的 class 文件所在的同一目录中读取一些配置文件 File configFiles new File this getClass getResource getPath listFiles new Filenam
  • Java 收集返回顶级项目的映射的嵌套流

    我有以下模型 class Item String name List
  • Spring Security OAuth2简单配置

    我有一个简单的项目 需要以下简单的配置 我有一个 密码 grant type 这意味着我可以提交用户名 密码 用户在登录表单中输入 并在成功时获得 access token 有了该 access token 我就可以请求 API 并获取用户
  • 在 Spring Boot Actuator 健康检查 API 中启用日志记录

    我正在使用 Spring boot Actuator APIproject https imobilenumbertracker com 拥有一个健康检查端点 并通过以下方式启用它 management endpoints web base
  • 如何在 Quartz 调度程序中每 25 秒运行一次?

    我正在使用 Java 的 Quartz Scheduling API 你能帮我使用 cron 表达式每 25 秒运行一次吗 这只是一个延迟 它不必总是从第 0 秒开始 例如 序列如下 0 00 0 25 0 50 1 15 1 40 2 0
  • 如何在Java中正确删除数组[重复]

    这个问题在这里已经有答案了 我刚接触 Java 4 天 从我搜索过的教程来看 讲师们花费了大量精力来解释如何分配二维数组 例如 如下所示 Foo fooArray new Foo 2 3 但我还没有找到任何解释如何删除它们的信息 从内存的情
  • 哪个集合更适合存储多维数组中的数据?

    我有一个multi dimensional array of string 我愿意将其转换为某种集合类型 以便我可以根据自己的意愿添加 删除和插入元素 在数组中 我无法删除特定位置的元素 我需要这样的集合 我可以在其中删除特定位置的数据 也
  • Java:多线程内的 XA 事务传播

    我如何使用事务管理器 例如Bitronix http docs codehaus org display BTM Home JBoss TS http www jboss org jbosstm or Atomikos http www a
  • 在android中跟踪FTP上传数据?

    我有一个运行 Android 的 FTP 系统 但我希望能够在上传时跟踪字节 这样我就可以在上传过程中更新进度条 安卓可以实现这个功能吗 现在 我正在使用org apache common net ftp我正在使用的代码如下 另外 我在 A

随机推荐

  • 更新 iPhone 应用程序行为

    我为iPhone设备开发了一款与数据库相关的应用程序 SQlite数据库 现在我想用更多功能更新该应用程序 我想推送同一应用程序的更新 在这里 我在推送更新时更关心用户数据 所以我的问题是 如果我将推送更新 那么更新是否会清除 sqlite
  • 关于 C++ 中的结构化异常 (SEH),我应该了解哪些信息?

    每个 C 开发人员都应该了解有关结构化异常的哪些要点 它们是相当于 Unix 信号的 Win32 可以让您捕获 CPU 异常 例如访问冲突 非法指令 除零等 使用正确的编译器选项 对于 Visual C 为 EHa C 异常使用与堆栈展开相
  • 如何使用 Apache MINA SSHD 阻止 SFTP 删除操作

    我正在尝试使用 Apache Mina SSHD 创建自定义 sftp 服务器 到目前为止我的代码 SshServer sshd SshServer setUpDefaultServer sshd setPort PORT NUMBER s
  • 在数据库中插入数据集记录

    我需要将数据集记录 C 插入 MS Access 数据库表中 我需要批量插入记录 我怎样才能在 C 中做到这一点 对于此类任务 请考虑使用数据适配器 http msdn microsoft com en us library system
  • Prometheusmetrics_path 中的问号被编码

    由于 Prometheus 仅支持文本指标和许多工具返回 json 格式的指标 如 Finatra Spring Boot 因此我创建了一个简单的代理 它将 json 转换为文本 因为我想将它用于多个源 所以要从中检索实际指标的目标是通过查
  • Websocket 消息是否会无序到达?

    如果我们通过同一个 html5 websocket 发送两条消息 彼此间隔毫秒 理论上 消息到达的顺序是否可能与发送的顺序不同 简短回答 不 长答案 WebSocket 通过 TCP 运行 因此在该级别上 EJP 的答案适用 WebSock
  • 运行应用程序脚本后,Google 电子表格冻结

    我的 Google 电子表格中附加了一个应用程序脚本 有一个函数可以在电子表格中执行很多操作 这就是它的作用 创建一个新工作表 设置新工作表的列标题 将数据复制到新工作表中 设置公式 删除多余的列 删除多余的行 在现有工作表中添加一行 工作
  • 指定并保存精确尺寸(以像素为单位)的图形

    假设我有一张尺寸为 3841 x 7195 像素的图像 我想将图形的内容保存到磁盘 从而生成一个图像精确尺寸我以像素为单位指定 没有轴 没有标题 只是图像 我个人并不关心 DPI 因为我只想指定图像在屏幕中在磁盘中所占的大小以像素为单位 我
  • Google 将自动完成功能设置为在 Windows 移动版 IE 浏览器中不起作用

    我们正在为我们的产品建立一个移动网站ridingo http www ridingo com 我们在我们的网站上广泛使用谷歌地点自动完成功能 这用于在用户键入时向他们提供建议 我们在多个浏览器和设备上对此进行了测试 这在 Android 设
  • Android 意图输入 Google Play 音乐应用程序的搜索查询

    您好 我正在尝试使用我的应用程序提供的字符串自动填充 Google Play 音乐上的搜索栏 我目前打算打开 Google Play 音乐 但我无法找到正确的参数来填充 Google Play 音乐上的搜索栏 这是我的代码 Intent i
  • Android webview 性能缓慢

    我正在用 javascript 编写一个游戏 这个应用程序在我的浏览器上运行良好 速度很快 但我在使用 android webview 运行它时遇到了一些麻烦 启动应用程序需要 5 秒或更长时间 我认为这有点慢 但也许这是正常的 在游戏菜单
  • 如何将只读数据发送到其他线程而不进行复制?

    我正在尝试将只读数据的 视图 发送到另一个线程进行处理 基本上主线程确实工作 不断更新一组数据 每当发生更新时 主线程应该将更新的数据发送到其他线程 在那里它们将以只读方式处理它 我不想复制数据 因为它可能非常大 无论如何 主线程还在内存中
  • Linux文件中的List.h?

    in linux include linux list h https github com torvalds linux blob 305230142ae0637213bf6e04f6d9f10bbcb74af8 include linu
  • 如何使用数组作为条件自动过滤

    我刚刚学习如何使用数组 并且对如何使用数组作为自动过滤条件的输入有点困惑 我想设置一个包含值的数组 然后使用这些相同的值过滤 Excel 电子表格 我执行了下面的代码 但是当我尝试自动过滤时它不断抛出错误 这是我的代码 Dim I As I
  • 通过拖放将文件从 Qt 5.2 应用程序复制到文件系统

    如何在 Qt 5 2 应用程序中生成文件拖放操作 以在文件系统 Windows Mac 等 中执行复制 或移动 更具体地说 生成具有 1 个以上文件路径的拖动 当将这些文件拖放到系统上时 将对这些文件执行复制 移动 是否有一个标准的 mim
  • window.opener 在 Windows 版 Excel 中不起作用

    我已经构建了一个 Excel 加载项 它通过以下方式打开一个弹出窗口window open 然后加载项与弹出站点进行通信 我刚刚意识到它在 Windows 的 Excel 中不起作用 原因是弹出窗口无法通过以下方式获取主机 window o
  • 错误“冲突解决程序拒绝突变。”当在放大中删除时

    我有一个简单的全栈放大应用程序 这是我的模型 type Note model auth rules allow public id ID name String description String image String NoteTyp
  • 水平进度条添加圆圈指示器

    Im trying to create a custom horizontal progressBar that will have certain amount of circle indicators in it like this o
  • R重新排列数据框:一些行到列

    我什至不知道如何正确地命名问题 假设我有一个数据框 d 当前数据框 d lt data frame sample LETTERS 1 2 cat letters 11 20 count c 1 10 sample cat count 1 A
  • HTTP 删除与请求正文问题

    任何人都可以解释以下内容 package com foo bar import java io InputStream import java net HttpURLConnection import java net ProtocolEx