2016-06-24 3 views
0

Azure 데이터 마켓에 연결하려고합니다. odata 저장소입니다. 최신 Olingo 라이브러리 인 r4.2.0을 사용하고 있습니다. 다음 코드 :datamarket에 연결을 시도하면 예외가 발생합니다.

<?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> 

누군가가 자바와이 라이브러리 또는 서로 푸른 데이터 시장에 연결을 시도 :

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] 

서버 반환을 반환?

답변

2

봅니다 요청 헤더 만 JSON 또는 XMLAccept & 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"); 

이 다른 유래 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

관련 문제