我想使用API-Gateway从amazon aws获取信息。我已经创建了一个生成信息的Lambda函数,并将该函数转换为API网关。
我想调用invoke-webrequest来获取信息。web请求将包含以下信息,以便传递以从api网关获取信息: AWSURL、APIKEY、Data
我已经在Powershell3.0中创建并测试了invoke-webrequest,下面是代码
Invoke-WebRequest -Headers @{"X-Api-Key" = "<key>"} -Method PUT
-Body "<data>" -Uri <awsURL>
| Select-Object -Expand Content这是真正的问题所在。
我的大多数机器都在Windows POS 2009上,我已经创建了在powershell 2.0中工作的脚本,并在我的windows 10机器上进行了测试,运行良好
function ConvertFrom-Json20([object] $item){
add-type -assembly system.web.extensions
$ps_js=new-object system.web.script.serialization.javascriptSerializer
#The comma operator is the array construction operator in PowerShell
return ,$ps_js.DeserializeObject($item)
}
$awsUrl = "<awsURL>"
$urlHeader = [System.Net.WebRequest]::Create($awsURL)
$urlHeader.Headers.Add("X-Api-Key","<APIKEY>")
$urlHeader.Method = "PUT"
$data = "<DATA>"
$requestStream = $urlHeader.GetRequestStream()
$streamWriter = New-Object System.IO.StreamWriter($requestStream)
$streamWriter.Write($data)
if ($null -ne $streamWriter) { $streamWriter.Dispose() }
if ($null -ne $requestStream) { $requestStream.Dispose() }
$res = $urlHeader.GetResponse()
$streamReader = New-Object System.IO.StreamReader $res.GetResponseStream()
$result = $streamReader.ReadToEnd()
$resultFromJson = ConvertFrom-Json20 $result
Write-Host $resultFromJson然而,当我在windows XP pos2009上运行这个脚本时,它不工作。Windows XP POS 2009使用的是powershell 2.0。我在下面得到一个getResponse()错误检查
Exception calling "GetResponse" with "0" argument(s): "The underlying connection was closed: An unexpected error occurred on a send."
At line:24 char:30
+ $res = $urlHeader.GetResponse <<<< ()
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : DotNetMethodException
You cannot call a method on a null-valued expression.
At line:26 char:73
+ $streamReader = New-Object System.IO.StreamReader $res.GetResponseStream <<<< ()
+ CategoryInfo : InvalidOperation: (GetResponseStream:String) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull
You cannot call a method on a null-valued expression.
At line:27 char:34
+ $result = $streamReader.ReadToEnd <<<< ()
+ CategoryInfo : InvalidOperation: (ReadToEnd:String) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull我认为这可能与windows XP POS 2.0服务不喜欢响应或其他原因有关,作为替代方案,我可以使用cURL,但我真的希望使用windows powershell2.0脚本来实现这一点。
谁能提供他们的知识和经验在这方面,因为我已经尝试了这么久。谢谢。
https://stackoverflow.com/questions/51323946
复制相似问题