2016-07-02 9 views
2

Microsoftの認知サービスからテキスト分析APIをテストして評価しようとしています。私たちは、Invoke-RestMethodを使用してPowerShellスクリプトを素早く汚れたものにしようとしています。いくつかの微調整の後、私たちはまだ400のエラーを返しています。 JSONが修正されているように見えて、入力したAPIキーが正しいと思われるため、何が間違っているかはわかりません。私たちは別の人のブログで追加ヘッダーの使用について見つけたものを利用し、いくつかの亜種を試しましたが、ダイスはまだありませんでした。誰かが私たちの健全性チェックをすることはできますか?Microsoft認定APIのInvoke-RestMethodを使用して400の不正なリクエストエラーを取得する

#html tag stripper function 
function htmlStrip ($results) 
    { 
    #using .NET toString method to ensure PS doesn't interpret same var incorrectly 
    $results = $results.toString() 
    $results -replace '<[^>]*(>|$)' 
    } 


Try 
{ 


    [string]$sourceUrl = Read-Host "Enter a URL such as https://foobar.com" 
} 
Catch 
{ 
    Write-Host "URL requires http:// or https:// prefix e.g. https://cnn.com" 
} 


$webClient = New-Object Net.WebClient 
[string]$results = $webClient.DownloadString($sourceUrl) 


[string]$cleanResults = htmlStrip $results 


$body = 
[ordered]@{"documents" = 
    @{ "language" = "en"; "id" = $sourceUrl; "text" = $cleanResults } 
    } 

#> 

$body = [ordered]@{ 
    "documents" = 
    @(
     @{ "language" = "en"; "id" = $sourceUrl; "text" = $cleanResults } 
    ) 
} 

$jsonBody = $body | ConvertTo-Json 

#Begin Text Analytics API Call with Invoke-RestMethod wrapper 
#[string]$apiUrl = "https://westus.api.cognitive.microsoft.com/text/analytics/v2.0/keyPhrases" 
[string]$apiKey = "REDACTED" 


$headers = @{ "Ocp-Apim-Subscription-Key" = $apiKey } 

$analyticsResults = Invoke-RestMethod -Method Post -Uri $apiUrl -Headers $headers -Body $jsonBody -ContentType "application/json" -ErrorAction Stop 

Write-Host $analyticsResults 

Write-Host $jsonBody 

答えて

1

あなたの要求のtextプロパティに入力したデータはおそらく有効ではありません。
GitHub上のTypeScriptリポジトリのREADME.mdへの修正URLを使用してスクリプトを試しました。

もあなたのスクリプト(やや短縮)

$sourceUrl = 'https://raw.githubusercontent.com/Microsoft/TypeScript/master/README.md' 

$webClient = New-Object Net.WebClient 
$results = $webClient.DownloadString($sourceUrl) 

$body = [ordered]@{ 
    "documents" = 
    @(
     @{ "language" = "en"; "id" = $sourceUrl; "text" = $results } 
    ) 
} 

$jsonBody = $body | ConvertTo-Json 

$apiUrl = "https://westus.api.cognitive.microsoft.com/text/analytics/v2.0/keyPhrases" 
$apiKey = "..." 

$headers = @{ "Ocp-Apim-Subscription-Key" = $apiKey } 

$analyticsResults = Invoke-RestMethod -Method Post -Uri $apiUrl -Headers $headers -Body $jsonBody -ContentType "application/json" -ErrorAction Stop 
$analyticsResults.documents.keyPhrases 

結果、私が見

TypeScript compiler 
gulp tests 
g typescript 
TypeScript source 
built compiler 
TypeScript users 
g gulp 
TypeScript directory 
cd TypeScript 
gulp baseline 
gulp lint 
gulp local 
gulp clean 
gulp runtests-browser 
gulp LKG 
Install Gulp tools 
... 
+0

は、共有のための感謝!マイクロソフトでは、特定の種類の印刷可能または印刷できない文字を禁止している可能性があります。おそらくアンチSQLインジェクションタイプの文字です。私たちの検証のためにありがとう! –

関連する問題