Java HttpUrlConnection POST 请求特殊字符奇怪的行为

2024-01-12

我正在尝试使用 HttpURLConnection 实现 POST 请求。这是我的代码:

private static void call(String body) throws IOException{
    HttpURLConnection con = null;

    con = (HttpURLConnection)new URL("http://127.0.0.1:8080").openConnection();

    con.setRequestProperty("Accept-Charset", "UTF-8");
    con.setRequestMethod("POST");
    con.setRequestProperty("Content-Type", "application/json; charset=utf-8"); 
    con.setRequestProperty("Accept", "application/json; charset=utf-8");

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

我将其发布到本地主机只是为了用 WireShark 嗅探它。 问题是当我的body是一个包含 ' 等字符的字符串ò' 'à' 'è' 'ç' ...我看到的请求的字符串正确,这些字符被点替换。

例子: 如果身体是“hèllo!“ ---> 请求正文是”h.llo!"

只是为了测试,我在 java main 中执行上述方法,并以这种方式传递参数:

String pString = "{\"titlè\":\"Hèllo Wòrld!\"}";
String params = new String(pString.getBytes("UTF-8"),"UTF-8");
....
call(body);

这就是我在 WireShark 中得到的:

POST / HTTP/1.1
Accept-Charset: UTF-8
Content-Type: application/json; charset=utf-8
Accept: application/json; charset=utf-8
User-Agent: Java/1.6.0_43
Host: 127.0.0.1:8080
Connection: keep-alive
Content-Length: 24

{"titl.":"H.llo W.rld!"}

任何帮助,将不胜感激。 谢谢


Java 中的内部字符串表示形式始终为 UTF-16。所以在你的第二个例子中params = new String(pString.getBytes("UTF-8"),"UTF-8");将 pString 转换为包含 UTF-8 内容的字节数组,然后再转换回存储在 params 中的 UTF-16。 当字符串进入或离开虚拟机时,每个编码都必须完成。这意味着在您的情况下,您必须在将正文写入流时设置编码。

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

Java HttpUrlConnection POST 请求特殊字符奇怪的行为 的相关文章

  • Java:迭代 Collection 的最佳方法(此处为 ArrayList)

    今天 当我看到一段我已经使用了数百次的代码时 我很高兴地开始编码 迭代集合 此处为 ArrayList 出于某种原因 我实际上查看了 Eclipse 的自动完成选项 这让我想知道 在什么情况下以下循环比其他循环更好使用 经典的数组索引循环
  • Java:如何从转义的 URL 获取文件?

    我收到了一个定位本地文件的 URL 事实上我收到的 URL 不在我的控制范围内 URL 按照 RFC2396 中的定义进行有效转义 如何将其转换为 Java File 对象 有趣的是 URL getFile 方法返回一个字符串 而不是文件
  • org.apache.sling.api.resource,version=[2.3,3) -- 无法解析

    您好 我无法访问我的项目内容 我已经上传了从 CQ 访问内容所需的所有包 我唯一能看到的是 org apache sling api resource version 2 3 3 无法解析 这是否是异常的原因 如果是 请告诉我如何解决 中Q
  • Android在排序列表时忽略大小写

    我有一个名为路径的列表 我目前正在使用以下代码对字符串进行排序 java util Collections sort path 这工作正常 它对我的 列表进行排序 但是它以不同的方式处理第一个字母的情况 即它用大写字母对列表进行排序 然后用
  • 我需要什么库才能在 Java 中访问这个 com.sun.image.codec.jpeg?

    我正在用java创建一个图像水印程序 并导入了以下内容 import com sun image codec jpeg JPEGCodec import com sun image codec jpeg JPEGEncodeParam im
  • 我可以使用子接口重新编译公共 API 并保持二进制兼容性吗?

    我有一个公共 API 在多个项目中多次使用 public interface Process
  • 使用 AES SecretKey 的 Java KeyStore setEntry()

    我目前正在 Java 中开发一个密钥处理类 特别是使用 KeyStore 我正在尝试使用 AES 实例生成 SecretKey 然后使用 setEntry 方法将其放入 KeyStore 中 我已经包含了代码的相关部分 The KS Obj
  • 画透明圆,外面填充

    我有一个地图视图 我想在其上画一个圆圈以聚焦于给定区域 但我希望圆圈倒转 也就是说 圆的内部不是被填充 而是透明的 其他所有部分都被填充 请参阅这张图片了解我的意思 http i imgur com zxIMZ png 上半部分显示了我可以
  • hibernate锁等待超时超时;

    我正在使用 Hibernate 尝试模拟对数据库中同一行的 2 个并发更新 编辑 我将 em1 getTransaction commit 移至 em1 flush 之后我没有收到任何 StaleObjectException 两个事务已成
  • 匿名类上的 NotSerializedException

    我有一个用于过滤项目的界面 public interface KeyValFilter extends Serializable public static final long serialVersionUID 7069537470113
  • 使用 SQLITE 按最近的纬度和经度坐标排序

    我必须获得一个 SQLite SQL 语句 以便在给定初始位置的情况下按最近的纬度和经度坐标进行排序 这是我在 sqlite 数据库中的表的例句 SELECT id name lat lng FROM items EXAMPLE RESUL
  • 如何知道抛出了哪个异常

    我正在对我们的代码库进行审查 有很多这样的陈述 try doSomething catch Exception e 但我想要一种方法来知道 doSomething 抛出了哪个异常 在 doSomething 的实现中没有 throw 语句
  • Cucumber Java 与 Spring Boot 集成 - Spring @Autowired 抛出 NullPointer 异常

    我正在为 Spring boot 应用程序编写 cucumber java 单元测试来测试每个功能 当我与 Spring Boot 集成时 Autowired 类抛出 NullPointer 异常 Spring Boot应用程序类 Spri
  • 我可以创建自定义 java.* 包吗?

    我可以创建一个与预定义包同名的自己的包吗在Java中 比如java lang 如果是这样 结果会怎样 这难道不能让我访问该包的受保护的成员 如果不是 是什么阻止我这样做 No java lang被禁止 安全管理器不允许 自定义 类java
  • 游戏内的java.awt.Robot?

    我正在尝试使用下面的代码来模拟击键 当我打开记事本时 它工作正常 但当我打开我想使用它的游戏时 它没有执行任何操作 所以按键似乎不起作用 我尝试模拟鼠标移动和点击 这些动作确实有效 有谁知道如何解决这个问题 我发现这个问题 如何在游戏中使用
  • 将 Azure AD 高级自定义角色与 Spring Security 结合使用以进行基于角色的访问

    我创建了一个演示 Spring Boot 应用程序 我想在其中使用 AD 身份验证和授权 并使用 AD 和 Spring Security 查看 Azure 文档 我执行了以下操作 package com myapp contactdb c
  • Java中的Object类是什么?

    什么是或什么类型private Object obj Object http download oracle com javase 6 docs api java lang Object html是Java继承层次结构中每个类的最终祖先 从
  • javafx android 中的文本字段和组合框问题

    我在简单的 javafx android 应用程序中遇到问题 问题是我使用 gradle javafxmobile plugin 在 netbeans ide 中构建了非常简单的应用程序 其中包含一些文本字段和组合框 我在 android
  • 为什么这个作业不起作用?

    我有课Results which extends ArrayList
  • Trie 数据结构 - Java [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 是否有任何库或文档 链接提供了在 java 中实现 Trie 数据结构的更多信息 任何帮助都会很棒 Thanks 你可以阅读Java特里树

随机推荐

  • JGit:检索与 git 提交关联的标签

    我想使用 JGit API 检索与特定提交哈希相关的标签 如果有的话 请提供相同的代码片段 Git 对象模型 http book git scm com 1 the git object model html将标签描述为包含有关特定对象的信
  • @Order注解对XML序列化顺序没有影响

    我正在使用 Retrofit 2SimpleXmlConverter我在创建 Soap 请求对象时遇到一个问题 该对象基本上是一个具有 4 个元素子元素的元素 每个子元素都是不同的数据类型 这里是XML我想要产生的输出 必须遵守元素顺序
  • 如何在 Xcode 9 中使用带有 Playground 的自定义框架

    我正在尝试在 Playground 中使用自定义框架 如 Apple 文档中所述 http help apple com xcode mac 9 0 devc9b33111c http help apple com xcode mac 9
  • Eclipse 上安装的插件不可见

    当我在 Eclipse 中安装插件时 一切都很顺利 但重启后新插件就看不见了 我尝试过使用不同的插件 但它们都有同样的问题 我能看到它们的唯一地方是当我查看 已安装什么 时 可能是什么问题呢 这个问题及其解决方案在DZone 文章 http
  • 我正在用 C 搜索 cgi 库来构建一个安静的 Web 服务

    我想构建一个安静的 CoAP Web 服务 它可以执行 C 代码来处理事件 因此我正在搜索一个lib 它为我提供了C和cgi中的rest api 类似于 遗憾的是 restcgi 是用 c 编写的 而 CGI Simple 是用 perl
  • System.Data.SqlClient.SqlException:列名“Gender_id”无效

    我正在学习使用 ASP NET MVC 和实体框架进行 Web 应用程序开发 我有一个包含 3 个表的数据库 分别是学生 性别和课程 我遇到了这个问题 错误位于第 23 行 列名称 Genders Id 无效 列名 Programs Id
  • ruby 方法名称中的变量

    我有以下代码 for attribute in site device attributes device attribute end 我希望代码用 属性 的值替换方法名称 我努力了device attribute 以及各种排列 这完全不可
  • 找不到文本月份,跟踪数据 Carbon - laravel

    我确实尝试了不同的方法 但没有得到正确的时间格式 news gt created at Carbon parse news gt created at gt format M d Y news gt created at date d M
  • OpenCV DFT_INVERSE与Matlab的ifft不同

    我尝试使用 opencv 的 dft 函数过滤信号 我尝试的方法是在时域中获取信号 x 0 0201920000000000 0 0514940000000000 0 0222140000000000 0 0142460000000000
  • getenv() 的全局变量?

    哪个全局变量保存了 getenv 的所有环境变量 在哪个 glibc 文件中 这个 var 填充了 env vars 我相信它是 environ 但是当我在 bash 中设置环境变量时 它只输出 SSH AGENT PID 环境变量 为什么
  • 什么是 SQL“伪列”?

    我不小心编码了SELECT FOO 并收到错误 无效的伪列 FOO 我找不到他们的任何文档 这是我应该知道的事情吗 编辑 这是一个 MS SQL Server 特定问题 伪列是实际列的符号别名 具有特殊属性 例如 IDENTITY 是分配了
  • Cordova PushPlugin:应用程序未运行时 Android 不会播放推送声音

    我正在使用推送插件 https github com phonegap build PushPlugin对于cordova 以及在android中 当应用程序未运行或在后台时 我无法使推送通知播放声音 状态栏中的横幅显示正常 这是在 and
  • java.lang.IllegalArgumentException:API接口不得扩展其他接口Retrofit 2

    我在使用 Retrofit 2 beta 2 时遇到了下一个问题 java lang IllegalArgumentException API interfaces must not extend other interfaces 这是因为
  • 访问非指令控制器函数内的属性值

    HTML 内容
  • Hydra MPI 的最大进步是什么

    我正在研究 MPICH2 自动附带的新流程管理器 但到目前为止我无法弄清楚这个实现有什么重大进步 有人知道一个好的教程或有一些经验吗 argonne wiki 有点太简单了 http wiki mcs anl gov mpich2 inde
  • Lua检查文件是否打开

    我正在尝试编写一个 lua 文件脚本来检查某个文件是否打开 然后我希望它关闭该文件 如果该文件已打开 我知道如何检查文件是否存在 但我需要知道如何检查文件是否打开 即文件正在运行 Lua 与 C C 和几乎所有其他语言一样 只能关闭它打开的
  • 页面加载时检查引导表复选框

    我在用引导表 http bootstrap table wenzhixin net cn documentation 我正在尝试设置复选框 问题是复选框在没有特殊原因的情况下被启动为选中状态
  • 如何从firestore数据库中的云功能更新多个文档?

    我是 firebase 云功能的新手 我想更新username一些文件的字段来自posts集合时users收藏改变它username特定文档的字段 我使用以下代码来做到这一点 exports updateProfileUsername fu
  • VC++:KB971090 并选择 Visual C 运行时 DLL 依赖项

    如您所知 Microsoft 最近为 Visual Studio 部署了安全更新 KB971090 http support microsoft com kb 971090 除此之外 这还将 Visual C 运行时 DLL 从版本 8 0
  • Java HttpUrlConnection POST 请求特殊字符奇怪的行为

    我正在尝试使用 HttpURLConnection 实现 POST 请求 这是我的代码 private static void call String body throws IOException HttpURLConnection co