[英]Making POST Request from PowerShell, JSON Parse Error From Powershell but Not Postman
我正在嘗試通過 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 object 的構造函數或對象工廠...
當我 echo $body 它看起來很好(盡管請求很大),但更重要的是,如果我只是 ctrl+a ctrl+c 文本文件並將其粘貼到 postman 並運行它,則服務成功。
只是為了確保我從 postman 復制了請求並將其放回文件中,將文件重新加載到變量中並將其轉換為 json 並再次嘗試; 同樣的問題。
即使刪除了可為空的字段,請求也很龐大,但從我在 powershell 中看到的情況來看,它通過回顯請求看起來很好......
是否有關於讀取 powershell 中的文件可能會向變量添加隱藏字符的問題,和/或通過 powershell 發送大量請求是否存在問題?
更新:如果我刪除大部分請求,留下一個有效的 json 實體,但一個與架構不匹配的實體,我會收到 400 錯誤(錯誤請求)。
更新 2:當應用程序嘗試處理它時,我發現了如何獲取 json 消息(我認為將字符串轉換為 json 的過程可能是問題)。 我復制了應用程序聲稱有問題的 json 並將其與包含實際 json 的文件進行了比較 - 它們是相同的。
想通了:顯然 ConvertTo-Json 步驟是問題所在。 我不確定為什么會導致問題,但是當我發送 $content (文件的內容,直接復制為文本)時,調用有效,但是如果我設置 $body = $content | ConvertTo-Json 並發送 $body,請求失敗。
編輯:顯然不能將此標記為 2 天的答案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.