0

アプリケーションを Azure に登録し、シークレットを受け取り、Delphi 2010 で TIdHTTP を使用してアクセス トークンを取得しました。

paramsList := TStringList.Create;
paramsList.Add('grant_type=client_credentials');
paramsList.Add('client_id=<ClientID>');
paramsList.Add('client_secret=<ClientSecret>');
paramsList.Add('scope=http://api.microsofttranslator.com');
try
  Result := idHTTP.Post(uri, lParamList);
finally
  FreeAndNill(idHTTP);
  FreeAndNill(paramsList);
end;

次に、コピーを使用して応答のトークン部分を抽出します。現在、実際の翻訳を取得しようとすると、Bad Request エラーが表示されます。ここに私が試すものがあります:

idHTTP.Request.CustomHeaders.AddValue('Authorization', headers);
try
   stringResult := idHTT.Get('http://api.microsofttranslator.com/v2/Http.svc/Translate?text=Gracias%20a%20l%20vida&from=es&to=en');
finally
   FreeAndNil(idHTTP);
end;

また、投稿を使用して応答を取得できませんでした:

paramList := TStiringList.Create;
paramList.Add('Authorization= Bearer ' + Token);
try
  idHTTP.Post(uri, paramList);
finally
...

それでも同じ応答 - 400、何か考えはありますか?

4

2 に答える 2

0

まず、事実: Microsoft Translator でアクセス トークンを要求するときはPostを使用し、アクセス トークンを使用して API にアクセスするときはGetを使用します(@RemyLebeau に感謝します)。今コード。アクセストークンを受け取るための上記のコードは機能します。したがって、翻訳を取得するためのコードも簡単です。

lHTTP.Request.CustomHeaders.FoldLines := false; // avoid split by white space
lHTTP.Request.CustomHeaders.AddValue('Authorization', 'Bearer ' + AuthKey);
myStream =  TStringStream.Create;
try
  lHTTP.Get(uri, stream);
  stream.Position := 0;
  Result := stream.ReadString(stream.size);
finally
  FreeAndNil(lHTTP);
  FreeAndNil(stream);
end;
于 2014-02-11T13:20:24.480 に答える