从 PowerShell 发出 POST 请求,来自 Powershell 但不是 Postman 的 JSON 解析错误

如何解决从 PowerShell 发出 POST 请求,来自 Powershell 但不是 Postman 的 JSON 解析错误

我正在尝试通过 PowerShell 向本地 java spring 应用程序发出 POST 请求。

我从文件加载请求,将其转换为 json,然后尝试 Invoke-RestMethod。

$filePath = some/file/path.json
$string = [System.IO.File]::ReadAllText($filePath)
$body = $string | ConvertTo-Json
$cred = Get-Credential
$uri = "some:url/restUri"

$response = Invoke-RestMethod -Method 'Post' -Uri $uri -Credential $cred -Body $body -ContentType "application/json"

运行此程序后,我收到一个 IOException,然后是“连接被远程主机强行关闭”。它说没有可以从字符串序列化java对象的构造函数或objectfactory...

当我回显 $body 时它看起来不错(尽管请求很大),但关键是如果我只是 ctrl+a ctrl+c 文本文件并将其粘贴到邮递员并运行它,则该服务是成功的。

为了确保我复制了邮递员的请求并将其放回文件中,将文件重新加载到变量中并将其转换为 json 并再次尝试;同样的问题。

即使删除了可空字段,请求仍然很大,但从我在 powershell 中看到的通过回显请求来看,它看起来不错......

是否有关于在 powershell 中读取文件可能会向变量添加隐藏字符的问题,和/或通过 powershell 发送大量请求是否存在问题?

更新:如果我删除大部分请求,留下一个有效的 json 实体,但一个与架构不匹配的实体,我会收到 400 错误错误请求)。

更新 2:我发现了如何在应用程序尝试处理它时获取 json 消息(我认为将字符串转换为 json 的过程可能是问题所在)。我复制了应用程序声称有问题的 json,并将其与包含实际 json 的文件进行了比较 - 它们是相同的。

解决方法

想通了: 显然 ConvertTo-Json 步骤是问题所在。我不确定它为什么会导致问题,但是当我发送 $content(文件的内容,直接复制为文本)时,调用有效,但是如果我设置 $body = $content | ConvertTo-Json 并发送 $body,请求失败。

编辑:显然不能将其标记为 2 天的答案。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?