.net 如何通过Net.WebRequest-PowerShell正确发送json数据
我正在编写一个powershell脚本,将json数据发布到REST接口,每次都会收到(400)个错误请求。我是新手,不清楚是否/如何对数据进行编码。我知道我需要将contenttype设置为application/json,但是我使用的编码选择是导致问题的原因吗?如果是,我应该使用什么.net 如何通过Net.WebRequest-PowerShell正确发送json数据,.net,json,rest,powershell,.net,Json,Rest,Powershell,我正在编写一个powershell脚本,将json数据发布到REST接口,每次都会收到(400)个错误请求。我是新手,不清楚是否/如何对数据进行编码。我知道我需要将contenttype设置为application/json,但是我使用的编码选择是导致问题的原因吗?如果是,我应该使用什么 $cred = New-Object System.Net.NetworkCredential -ArgumentList $authUser,$authPass $url = 'http://localhos
$cred = New-Object System.Net.NetworkCredential -ArgumentList $authUser,$authPass
$url = 'http://localhost:8080/alfresco/service/api/people'
$request = [Net.WebRequest]::Create($url)
$request.ServicePoint.Expect100Continue = $false
$request.Credentials = $cred
$request.ContentType = "application/json"
$request.Method = "POST"
$data = (New-Object PSObject |
Add-Member -PassThru NoteProperty username $username |
Add-Member -PassThru NoteProperty firstName $firstname |
Add-Member -PassThru NoteProperty lastName $lastname |
Add-Member -PassThru NoteProperty email $email |
Add-Member -PassThru NoteProperty password $password
) | ConvertTo-JSON
$bytes = [System.Text.Encoding]::ASCII.GetBytes($data)
$request.ContentLength = $bytes.Length
$requestStream = [System.IO.Stream]$request.GetRequestStream()
$requestStream.write($bytes, 0, $bytes.Length)
$response = $request.GetResponse()
在
$requestStream.Write()
之后,输入一个$requestStream.Close()
,查看这是否会将数据刷新到服务器 有$requestStream.Close()和没有$requestStream.Close()时,我都会遇到以下错误:使用“0”参数调用“GetResponse”时出现异常:“远程服务器返回了一个错误:(400)请求错误。”At:line:56 char:34+$response=$request.GetResponse能否将调用的输出发布到ConvertTo Json以确保发送的是valdi Json?数据变量输出为{“email”:kristest@psd401.net,“firstName”:“Kris”,“lastName”:“Test”,“password”:“test123”,“username”:“kristest”}更多信息:我将[System.Text.Encoding]更改为UTF8,现在从System.Byte[]收到一个错误,无法转换参数“0”,值为“{”email”:kristest@psd401.net“,“firstName”:“Kris”,“lastName”:“Test”,“organization”:“test123”,“username”:“kristest”}”,用于键入“GetChars”“System.Byte[]”更多错误:错误:“输入字符串的格式不正确。”“”At:line:48 char:48+$bytes=[System.Text.Encoding]::UTF8.GetChars