Azure认知服务与Powershell的读取请求

Azure认知服务与Powershell的读取请求,azure,powershell,azure-cognitive-services,Azure,Powershell,Azure Cognitive Services,我正在尝试将Azure认知服务API与Powershell结合使用,以“读取”blob存储中的.jpg内容。我试图使用Azure API演示/测试页面完成的所有工作都非常完美,因此我相当确信,这在一定程度上证明了我在代码中使用的某些元素是有效的。至少在使用API测试工具时是这样 这是我的Powershell: Clear-Host $myUri = "<ENDPOINT value from "keys and endpoint blade">/vision/v3.0/r

我正在尝试将Azure认知服务API与Powershell结合使用,以“读取”blob存储中的.jpg内容。我试图使用Azure API演示/测试页面完成的所有工作都非常完美,因此我相当确信,这在一定程度上证明了我在代码中使用的某些元素是有效的。至少在使用API测试工具时是这样

这是我的Powershell:

Clear-Host

$myUri      = "<ENDPOINT value from "keys and endpoint blade">/vision/v3.0/read/analyze?language=en"
$imagePath  = "<path to image in blob. accessible online and anonymously>"
$subKey     = "<KEY #1 from "keys and endpoint" blade>"

$headersHash = @{}
$headersHash.Add( "Host", "westeurope.api.cognitive.microsoft.com" )
$headersHash.Add( "Ocp-Apim-Subscription-Key", $subKey )
$headersHash.Add( "Content-Type","application/json" )

$bodyHash = @{ "url" = $imagePath }

out-host -InputObject "Sending request:"
$response = Invoke-WebRequest -uri $myUri `
    -Method Post `
    -Headers $headersHash `
    -Body $bodyHash `
    -verbose

"Response: $response"
我一定错过了一些基本的东西,但我看不出是什么。我找不到使用Powershell访问CS API的公开示例,但有一个Python(请求)示例,我非常确定我正在模拟并正确表示Python示例中的内容。但话说回来,它不起作用,所以有些地方不对劲


奇怪的是,当我尝试在Postman中重新创建此项时,我得到了一个202但没有响应的正文,因此我不可能查看或提取apim请求id以生成下一个请求来检索结果。

发现了问题。当我将调用包装在try/catch块中并将其放入catch块时,问题就清楚了:

$streamReader = 
[System.IO.StreamReader]::new($_.Exception.Response.GetResponseStream())
    $ErrResp = $streamReader.ReadToEnd() | ConvertFrom-Json
$streamReader.Close()
然后我可以查看$ErrResp变量的内容,其中有一个字符串片段,上面写着“无法下载目标图像…”或类似的内容。奇怪的是,我可以使用我提供的URL即时连接并获取图像。。所以它必须是URL注入人体的方式

是的

当使用哈希表作为主体时,您的内容类型是“application/json”,您需要做的似乎就是首先使用converttojson和您的哈希。这很管用,我立即得到了202和指向哪里收集结果的指针


希望这能在某个地方、某个时候对某人有所帮助。

找到了问题所在。当我将调用包装在try/catch块中并将其放入catch块时,问题就清楚了:

$streamReader = 
[System.IO.StreamReader]::new($_.Exception.Response.GetResponseStream())
    $ErrResp = $streamReader.ReadToEnd() | ConvertFrom-Json
$streamReader.Close()
然后我可以查看$ErrResp变量的内容,其中有一个字符串片段,上面写着“无法下载目标图像…”或类似的内容。奇怪的是,我可以使用我提供的URL即时连接并获取图像。。所以它必须是URL注入人体的方式

是的

当使用哈希表作为主体时,您的内容类型是“application/json”,您需要做的似乎就是首先使用converttojson和您的哈希。这很管用,我立即得到了202和指向哪里收集结果的指针


希望这能在某个地方、某个时候对某人有所帮助。

请不要将答案作为问题的一部分发布。绝对不要将非答案作为答案发布。我已经在这里纠正了这个问题。今后请遵循这种模式。堆栈溢出不是一个讨论论坛。如果你还没有,请接电话。抱歉,科迪。我已经看过了这次旅行,现在就可以拿到了。谢谢修复。请不要将答案作为问题的一部分发布。绝对不要将非答案作为答案发布。我已经在这里纠正了这个问题。今后请遵循这种模式。堆栈溢出不是一个讨论论坛。如果你还没有,请接电话。抱歉,科迪。我已经看过了这次旅行,现在就可以拿到了。谢谢修理。