簡體   English   中英

從 PowerShell、JSON 發出 POST 請求 從 Powershell 解析錯誤,但不是 Z6F061E1CAD5E2783CEA0B29763

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM