2016-06-24 7 views
0

私はAzureデータマーケットに接続しようとしています。これはodataリポジトリです。私は最新のOlingoライブラリr4.2.0を使用しています。次のコード:datamarketに接続しようとすると例外が返されます

String serviceUrl = "https://api.datamarket.azure.com/DataGovUK/MetOfficeWeatherOpenData/v1/"; 

ODataClient client = ODataClientFactory.getClient(); 
ODataServiceDocumentRequest req = client.getRetrieveRequestFactory().getServiceDocumentRequest(serviceUrl); 
req.setAccept("application/json;application/xml;odata.metadata=full"); 
req.setContentType("application/json;application/xml;odata.metadata=full"); 
ODataRetrieveResponse res = req.execute(); 

は例外

org.apache.olingo.client.api.communication.ODataClientErrorException: null [HTTP/1.1 415 Unsupported Media Type] 

サーバーリターンを返します。

<?xml version="1.0" encoding="utf-8"?> 
<m:error mlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"> 
    <m:code /> 
    <m:message xml:lang="en-US"> 
     Unsupported media type requested. 
    </m:message> 
</m:error> 

誰かがこのライブラリまたはJavaとの相互Azureのデータ市場に接続しようとしましたか?

答えて

2

JSONXML、両方ではないとリクエストヘッダAccept & Content-Typeを設定してください。下記を参照してください。

req.setAccept("application/json"); 
req.setContentType("application/json;odata.metadata=full"); 

それとも

req.setAccept("application/atom+xml,application/xml"); 
req.setContentType("application/atom+xml,application/xml;odata.metadata=full"); 

この他のstackoverflowのpostで説明したように、アカウントキーが承認

req.addCustomHeader("Authorization", "Basic " + getAccountKey()); 

用:

public String getAccountKey() 
{ 
    String accountKey = "My Microsoft Azure Account Key"; 
    byte[] accountKeyBytes = Base64.encodeBase64((accountKey + ":" + accountKey).getBytes()); 
    String accountKeyEnc = new String(accountKeyBytes); 
    return accountKeyEnc; 
} 
+0

、より良い感謝。私は今、 'HTTP/1.1 401 Unauthorized'になっています。どのように 'プライマリアカウントキー'でログインするのか? – ic3

+0

@ ic3 SOスレッドhttp://stackoverflow.com/questions/11136936/bing-search-api-azure-marketplace-authentication-in-javaの答えを参照することができます。 –

+0

作品、素晴らしい! – ic3

関連する問題