new URL(...).openConnection() 是否一定意味着 POST?

2023-11-26

如果我创建一个 HTTPjava.net.URL然后打电话openConnection()上面的内容是否一定意味着将要发生 HTTP post?我知道openStream()意味着 GET。如果是这样,如何在不使用原始套接字层的情况下执行其他 HTTP 动词之一?


如果您检索到URLConnection对象使用openConnection()它实际上并没有开始与服务器通信。直到您从URLConnection()。当您第一次获得连接时,您可以在实际打开连接之前添加/更改标头和其他连接属性。

URLConnection 的生命周期有点奇怪。在您获得其中一个流之前,它不会将标头发送到服务器。如果您只是获取输入流,那么我相信它会执行 GET,发送标头,然后让您读取输出。如果您获得输出流,那么我相信它会将其作为 POST 发送,因为它假设您将向其中写入数据(您可能需要调用setDoOutput(true)以使输出流正常工作)。一旦获得输入流,输出流就会关闭并等待服务器的响应。

例如,这应该执行 POST:

URL myURL = new URL("http://example.com/my/path");
URLConnection conn = myURL.openConnection();
conn.setDoOutput(true);
conn.setDoInput(true);

OutputStream os = conn.getOutputStream();
os.write("Hi there!");
os.close();

InputStream is = conn.getInputStream();
// read stuff here

虽然这会执行 GET:

URL myURL = new URL("http://example.com/my/path");
URLConnection conn = myURL.openConnection();
conn.setDoOutput(false);
conn.setDoInput(true);

InputStream is = conn.getInputStream();
// read stuff here

URLConnection还会做其他奇怪的事情。如果服务器指定了内容长度那么URLConnection将保持底层输入流打开,直到收到那么多数据,即使你明确关闭它。这给我们带来了很多问题,因为它使得彻底关闭我们的客户端变得有点困难,因为URLConnection将保持网络连接打开。即使您只是使用,这也可能存在getStream() though.

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

new URL(...).openConnection() 是否一定意味着 POST? 的相关文章

随机推荐

  • 从深度缓冲区获取真实的 z 值

    正如预期的那样 从着色器中的深度缓冲区采样会返回 0 到 1 之间的值 给定相机的近剪裁平面和远剪裁平面 如何计算此时的真实 z 值 即距相机的距离 From http web archive org web 20130416194336
  • 将类保存到二进制文件中 - Python

    我知道可以使用以下方法将类保存到 C 中的二进制文件中 file write Class variable size of class amount of saves file where to save 或类似的东西 我想在 python
  • MailApp.sendEmail 错误消息 - “无权调用 sendEmail”[重复]

    这个问题在这里已经有答案了 当我更改电子表格中的某些内容时 onEdit 触发器运行 我可以看到我放入代码中的所有消息框 我的函数停在这一行 MailApp sendEmail emailAddress subject message 我从
  • 是否可以仅使用区域监控 + GSM 并获得不超过 5 公里的水平精度?

    我想分享我执行的测试场景的信息 并请您分享您在区域监控方面的经验 因此 我注册了两个相对的区域 A 和 B 半径为 5 公里 所需精度为 1 公里 它们之间的距离为 20 公里 但是 从 A 到 B 时 我没有收到任何 didEnterRe
  • 如何从 Android 中的 TTF 文件读取字距调整对表

    我目前正在使用从 TTF 文件加载的外部 非标准 字体在 Canvas 上绘制文本 我想为我正在显示的文本启用字距调整 我想知道是否有可能使用 Android API 从字体中读取字距对 我想知道是否有可能使用 Android API 从字
  • 电子邮件通讯服务指南

    我正在实施一个电子邮件通讯发送服务使用 NET 和 Windows Server 技术 是否有全面的指南可以提供帮助避免电子邮件被垃圾邮件过滤器捕获以及其他机制 它们应该涵盖 合法 批量邮件发送的所有方面 SMTP 配置 DNS HTML
  • 在分支签出之间保留 git --assume-unchanged 文件

    我一直在使用git assume unchanged yacs settings development py忽略我的开发分支中的本地数据库配置文件 但是当我想切换分支 用于部署 时 我收到一条错误 指出我仍有待更改的更改 git chec
  • UIImagePickerController 裁剪?

    我读过它是自动的 但在我的情况下似乎没有发生 使用 UIImagePickerController 并将 allowedEditing 设置为 YES 我得到了带有裁剪方形叠加层的编辑视图 但是当我完成图像时 它没有按照我的预期裁剪 这个阶
  • Cols、col groups 和 css ":hover" 伪类

    我正在尝试创建一个表格来显示个人的体重指数 作为其中的一部分 我想 hover 为了 tr and tr
  • 使用 Ruby 和 Nokogiri 解析大型 XML 文件

    我有一个大型 XML 文件 大约 10K 行 需要定期解析 格式如下
  • 我可以使用 std::async 而不等待未来的限制吗?

    高水平我想在异步模式下调用一些没有返回值的函数 而不等待它们完成 如果我使用 std async 则未来对象在任务结束之前不会破坏 这使得调用在我的情况下不同步 Example void sendMail const std string
  • Pandas:将数据帧转换为列表字典

    我有一个像这样的数据框 col1 col2 A 0 A 1 B 2 C 3 我想得到这个 A 0 1 B 2 C 3 I tried df set index col1 col2 to dict 但这并不完全正确 我遇到的第一个问题是 A
  • 在 Ember.js 中所有视图完全渲染后执行一次代码

    类似于文档准备就绪 但毕竟 Ember 视图渲染 我现在正在通过覆盖 ApplicationView didInsertElement 来执行此操作 到目前为止似乎有效 App ApplicationView Em View extend
  • Java中如何获取新的Pointer?

    如何从 JNA 调用 C 中具有此方法签名的方法 int open device context ctx device dev int index C 方法的最后两行如下所示 dev pdev return 0 这是唯一的用途dev在那个方
  • 在没有显式 return 语句的情况下返回值

    在 JavaScript 中 从函数末尾掉落返回undefined 如果你想返回一个值 你需要使用显式return陈述 至少到目前为止是这样 但看起来 ECMAScript 6 至少有时会允许return被省略 什么情况下会出现这种情况呢
  • 是否有可能使 WinForms 选项卡控件能够像 IE 或 Firefox 一样进行选项卡重新排序?

    是否可以对 WinForms 中的选项卡重新排序TabControl像 IE 或 Firefox 那样在运行时 像这样的链接不要给我太多希望 当然 这是可能的 您很可能试图使解决方案变得过于复杂 本质上 您所要做的就是对标准进行子类化Tab
  • Java 解压缩使用 zlib deflate 压缩的字符串

    正如标题所说 如何解压缩使用 zlib deflate 压缩的压缩字符串 有解释的可靠方法是什么 试试这个 这是一个最小的工作示例 package zlib example import java io ByteArrayInputStre
  • 如何以编程方式在 PDF 文件中注入 JavaScript?

    如何以编程方式在 PDF 文件中注入 JavaScript 没有 Adob e Professional 可以完成吗 我的目标是 我想在打开 PDF 时立即显示打印对话框 我知道这可以通过嵌入文档中的 JavaScript 代码来完成 如果
  • iOS UIScrollView 取消 UIButton 触摸滚动

    我在 UIScrollView 中有一些 UIButtons 但我不想延迟按钮触摸 但是 一旦滚动视图检测到拖动 滚动 我想取消 UIButton 触摸并继续 UIScrollView 的滚动 我已包括以下内容 scrollView del
  • new URL(...).openConnection() 是否一定意味着 POST?

    如果我创建一个 HTTPjava net URL然后打电话openConnection 上面的内容是否一定意味着将要发生 HTTP post 我知道openStream 意味着 GET 如果是这样 如何在不使用原始套接字层的情况下执行其他