0

私はアンドロイドからms認知サービスを呼び出そうとしています。しかし、アクセストークンは、下記の..動作していない取得するためのAPIは、AndroidのコードはlogcatでMicrosoft認知サービス - 認証に関する問題、アクセストークンを取得できません

HttpPost httpPost = new HttpPost("https://api.cognitive.microsoft.com/sts/v1.0/issueToken"); 


List<NameValuePair> nameValuePair = new ArrayList<NameValuePair>(2); 
nameValuePair.add(new BasicNameValuePair("Ocp-Apim-Subscription-Key", "my subscription key")); 

try { 
    httpPost.setEntity(new UrlEncodedFormEntity(nameValuePair)); 
} catch (UnsupportedEncodingException e) { 

} 

try { 
    HttpResponse response = httpClient.execute(httpPost); 
} catch (ClientProtocolException e) { 
    e.printStackTrace(); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 

ですが、私はエラーを取得:

java.net.UnknownHostException: Unable to resolve host "api.cognitive.microsoft.com": No address associated with hostname

は、APIのURLに変更はあります」 https://api.cognitive.microsoft.com/sts/v1.0/issueToken "?私は、ブラウザで "https://api.cognitive.microsoft.com/sts/v1.0/issueToken" このURLを入力すると

はまた、私は助けてくださいメッセージ

{ "statusCode": 404, "message": "Resource not found" } 

を取得します。

+0

"ホストを解決できませんでした"に関しては、api.cognitive.microsoft.com " - firewall/dnsを確認してください。 GETが何もしなくなったらすぐにブラウザの動作は正しいです。トークンを取得するには、そこにPOSTする必要があります。 – mikalai

+0

ファイアウォール/ DNSで何も要求をブロックしていないことを確認しました。あなたのsuggesionsありがとう。それ以上のアイデア。 –

+0

結局、タイプミスだったのですか? – mikalai

答えて

1

知られているように、linkに記載されている内容と同じで、api url https://api.cognitive.microsoft.com/sts/v1.0/issueTokenには何の変更もありません。

私は、ツールPostmanenter image description hereでAPIを呼び出そうとしましたが、以下のようにトークンを取得できました。

ブラウザでタイプurlを使用して結果を得ることができませんでした。なぜなら、apiコールはブラウザのurlであるnagetive経由のGETリクエストではなく、POSTリクエストであるからです。

コードによっては、問題の内容が必要なコンテンツの長さが入力されていないために発生したようですContent-Length: 0

参考として、ここで動作する私のサンプルコードです。

URL url = new URL("https://api.cognitive.microsoft.com/sts/v1.0/issueToken"); 
HttpsURLConnection conn = (HttpsURLConnection) url.openConnection(); 
conn.setRequestProperty("Ocp-Apim-Subscription-Key", "XXXXXXXX"); 
conn.setRequestMethod("POST"); 
conn.setDoOutput(true); // Must set do output true 
conn.setFixedLengthStreamingMode(0); // Set Content-Length 0 
conn.connect(); 
int code = conn.getResponseCode(); 
String msg = conn.getResponseMessage(); 
System.out.println(code+"\t"+msg); 
IOUtils.copy(conn.getInputStream(), System.out); 

上記のコードは以下のとおりです。

200 OK 
eyXXXXXXXXXXXXXXXXXXXXXXXXXX 
+0

あなたが共有しているコードを試しましたが、エラーが表示されます。 "12-21 17:18:33.063:W/System.err(5372):java.net.UnknownHostException:ホスト" api.cognitive.microsoft。 com ":ホスト名に関連付けられたアドレスがありません " –

+1

パン - 誤って、誤字がありました。あなたのソリューションは完璧に動作しています。詳細な説明に感謝します。感謝。 –

関連する問題