2013-05-13 4 views
2

Я использую этот код, в котором используется odata4j ODataClientRequest и ODataConsumer попытаться вызвать службу OData, которая требует аутентификации:Как добавить информацию заголовка в ODataConsumer в odata4j?

String url = "https://mylocalhost/api/odata/People()?$filter=PID%20eq%20'10'"; 

    Map<String, String> headers = new HashMap<String, String>(); 
    headers.put("AccountID", "100"); 
    ODataClientRequest clientRequest = new ODataClientRequest("GET", url, headers, null, null); 

    ODataConsumer consumer = ODataConsumer.create(url); 

    for(OEntity entity : consumer.getEntities("People").execute()){ 

Однако я получаю сообщение об ошибке аутентификации, поскольку сервер запрашивает информацию аутентификации заголовка , Как я могу создать свой ODataConsumer, который включает в себя необходимую информацию заголовка авторизации?

ответ

0

Вместо того, чтобы вручную добавлять заголовок, я считаю, что вы можете использовать базовую проверку подлинности (поскольку вы получили ошибку аутентификации) на клиенте и можете добавить встроенное «поведение» клиента при настройке своего потребителя. Код для BasicAuthenticationBehavior.java отображается в следующей ссылке:

BasicAuthenticationBehavior.java

код для добавления базового поведения аутентификации на ваш ODataConsumer будет выглядеть примерно следующим образом:

ODataConsumer.Builder builder = ODataConsumers.newBuilder(url); 
builder.setClientBehaviors(new BasicAuthenticationBehavior(LoginUsername, LoginPassword));  
ODataConsumer c = builder.build(); 

for(OEntity entity : c.getEntities("EntityName").execute()){ 
    System.out.println(entity.getProperty("Name").getValue().toString()); 
}