2017-01-23 102 views
0

的OData的官方教程演示如何創建一個實體:http://www.odata.org/getting-started/basic-tutorial/#create如何在Apache Olingo中創建實體?

我想用TEMPLIER的教程阿帕奇Olingo內重現此與Olingo操縱的OData的V4服務數據(https://templth.wordpress.com/2014/12/05/manipulating-data-of-odata-v4-services-with-olingo/

不幸的是,這個教程是過時並且我無法創建成功的POST請求。試圖執行我的代碼產生HTTP/1.1 500 Internal Server Error

這是我到目前爲止的代碼:

String serviceRoot = "http://services.odata.org/V4/TripPinService/";  
String namespace = "Microsoft.OData.SampleService.Models.TripPin"; 

URI personURI = client.newURIBuilder(serviceRoot) 
      .appendEntitySetSegment("People").build();  
FullQualifiedName personFqn = new FullQualifiedName(namespace, "Person"); 

ClientEntity personEntity = client.getObjectFactory().newEntity(personFqn);  
personEntity.getProperties().add(
      client.getObjectFactory().newPrimitiveProperty(
        "username", 
        client.getObjectFactory().newPrimitiveValueBuilder() 
          .buildString("MaryGilbert"))); 
//same procedure for "FirstName" and "LastName", which are obligatory fields 

ODataEntityCreateRequest<ClientEntity> req = client.getCUDRequestFactory().getEntityCreateRequest(personURI,personEntity); 
ODataEntityCreateResponse<ClientEntity> res = req.execute(); 

我在做什麼錯?我能做些什麼來進一步識別/調試問題?

非常感謝。

回答

1

我認爲屬性名稱區分大小寫,所以請嘗試使用UserName而不是用戶名。另外,您可以使用Fiddler來調試您的問題。 這是您的使用案例的錯誤:

HTTP/1.1 500 Internal Server Error - {"error":{"code":"InternalServerError","message":"The property 'UserName[Nullable=False]' of type 'Edm.String' has a null value 
+0

哎呀,這實際上是問題所在。在將'username'調整爲'UserName'後,我現在收到一個'Status Code 201'。非常感謝你。進一步感謝你與提琴手的提示。該工具看起來很有趣。 –