我正试图通过powershell向本地javaspring应用程序发出post请求。
我从一个文件加载请求,将其转换为json,然后尝试调用rest方法。
$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,后跟一个“远程主机强制关闭连接”。它说没有构造函数或objectfactory可以从字符串中序列化java对象。。。
当我回显$body时,它看起来很好(虽然请求很大),但关键是如果我只需ctrl+a ctrl+c文本文件并将其粘贴到postman中并运行它,服务就成功了。
为了确保我复制了postman的请求并将其放回文件中,将文件重新加载到变量中并将其转换为json,然后重试;同样的问题。
即使删除了可为空的字段,请求也是巨大的,但是从我在powershell中看到的情况来看,通过响应请求,它看起来很好。。。
在powershell中读取文件是否会给变量添加隐藏字符,以及/或者通过powershell发送大量请求是否有问题?
更新:如果我删除了大部分请求,留下一个有效的json实体,但是一个与模式不匹配的实体,我会得到一个400错误(错误请求)。
更新2:我发现了如何在应用程序尝试处理json消息时获取它(我认为将字符串转换为json的过程可能是问题所在)。我复制了应用程序声称有问题的json,并将其与包含实际json的文件进行了区分—它们完全相同。
1条答案
按热度按时间kx7yvsdv1#
很显然,converttojson步骤就是问题所在。我不太清楚它为什么会引起问题,但是当我发送$content(文件的内容,直接复制为文本)时,调用工作,但是如果我设置$body=$content | convertto json并发送$body,请求就会失败。
编辑:2天内不能将此标记为答案。