Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 如何通过Net.WebRequest-PowerShell正确发送json数据_.net_Json_Rest_Powershell - Fatal编程技术网

.net 如何通过Net.WebRequest-PowerShell正确发送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

我正在编写一个powershell脚本,将json数据发布到REST接口,每次都会收到(400)个错误请求。我是新手,不清楚是否/如何对数据进行编码。我知道我需要将contenttype设置为application/json,但是我使用的编码选择是导致问题的原因吗?如果是,我应该使用什么

$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