2011-10-27 19 views
4

我想使用odata4j库从Java查询WCF OData服务。如果我使用ATOM格式查询实体,则一切正常。如果我切换到JSON,Java的抛出以下异常:如何使用OData4J请求来自OData服务操作的JSON数据?

java.lang.RuntimeException: java.lang.RuntimeException: EdmEntitySet GetStatesViewData?gac=0 not found 
    at org.core4j.ReadOnlyIterator.hasNext(ReadOnlyIterator.java:49) 
    at org.core4j.Enumerable$FuncIterator.hasNext(Enumerable.java:487) 
    at org.core4j.Enumerable$FuncIterator.hasNext(Enumerable.java:487) 
    at ... Caused by: java.lang.RuntimeException: EdmEntitySet GetStatesViewData?gac=0 not found at org.odata4j.edm.EdmDataServices.getEdmEntitySet(EdmDataServices.java:40) 
at org.odata4j.internal.EdmDataServicesDecorator.getEdmEntitySet(EdmDataServicesDecorator.java:31) 
at org.odata4j.format.json.JsonFeedFormatParser.parse(JsonFeedFormatParser.java:99) 
at org.odata4j.format.json.JsonFeedFormatParser.parse(JsonFeedFormatParser.java:21) 
at org.odata4j.consumer.OQueryRequestImpl$EntryIterator.advance(OQueryRequestImpl.java:192) 
at org.core4j.ReadOnlyIterator.hasNext(ReadOnlyIterator.java:47) 
... 10 more 

下面的代码生成此异常:ODataConsumer ODC =

ODataConsumer.create(FormatType.JSON, "http://localhost:6000/"); 
     Iterator<OEntity> iterator = odc.getEntities("GetStatesViewData?gac=0").execute(); 
for(OEntity entity: entities) 
{ 
.. 
} 

OData4j无法找到实体 “GetStatesViewData GAC = 0?” ,但这样的财产不存在。存在的是服务操作“GetStatesViewData”,它接受参数“gac”。是否可以使用OData4j使用参数调用服务操作?

如果我使用Fiddler或其他web调试器,发送带有“accept:application/json”头的HTTP请求到这个OData服务,我通常会得到JSON提要。所以在OData4j或我的代码中都有问题,OData服务器似乎没问题。

+0

如果我查询一个实体,而不是服务的方法,所以它是不缺少的服务方法支持的问题,它的行为是相同的。 –

回答

相关问题