我正在使用以下代码,该代码利用odata4j ODataClientRequest
和ODataConsumer
尝试调用需要身份验证的OData服务:
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
? 最佳答案
我相信您可以在客户端上使用基本身份验证(因为收到身份验证错误),而不是手动添加标头,并且可以在设置使用者时添加内置的客户端“行为”。以下链接显示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());
}