2016-06-24 4 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> 

Кто-то пытался подключиться к рынку данных Azure с этой библиотекой или другой с Java?

ответ

2

Попробуйте установить заголовки запроса Accept & Content-Type только с JSON или XML, но не оба. См. Ниже.

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"); 

и для разрешения

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

где ключ счета, как описано в этом другом StackOverflow post является:

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

Смежные вопросы