2016-07-19 8 views
0

新しいエンティティを作成するためにJavaでODataClientを開発しました。新しいエンティティを作成するのに苦労しています。私は主導権を握って、クライアントからFiddlerに送られたすべてのメッセージを見ました。私はバイオリンを用いて得られた体の最初の行の下Odata V4クライアント:getEntityCreateメソッド

 ODataEntityCreateRequest<ClientEntity> request= 
      client.getCUDRequestFactory() 
      .getEntityCreateRequest(new URI("http://localhost:8888/"), clientEntity); 

    request.addCustomHeader("Content-Type", "application/json;odata.metadata=minimal"); 
    request.setAccept("application/json;odata=minimalmetadata"); 

    ODataEntityCreateResponse<ClientEntity> response = request.execute(); 

17b 
{"@odata.type":"#ODataDemo.Product", ....} 

Iは、新しいエンティティを作成するフィドラーを使用して手動でテストされ、メッセージ本文の最初の行がなければならない:

{"odata.type":"ODataDemo.Product", ....} 

"@"と "#"を削除するために、Odataでリクエストの本文を設定できるかどうかを知りたいです。

おかげで、

答えて

0

は、私は、この問題に対する別の解決策を見つけました。私は完全にODataライブラリを使用していません。私はポストRequestへのメソッドを作成しました。

public void insertData(String entityName, Entity entity) 
{  
    try { 
     ResWrap<Entity> resW = new ResWrap<Entity>(new URI(this.baseURI.concat("/").concat(entityName)), "full", entity); 
     ClientEntity clientEntity = this.client.getBinder().getODataEntity(resW); 
     //String message = getMessageRebuild(client.getWriter().writeEntity(clientEntity, ContentType.APPLICATION_JSON)); 

     InputStream is = client.getWriter().writeEntity(clientEntity, ContentType.APPLICATION_JSON); 

     if(is != null) 
     { 
      System.out.println("POST: "+post(this.baseURI.concat("/").concat(entityName), is)); 
      //System.out.println("POST:"+post("http://localhost:8888/"+entityName, is)); 
     } 
    } catch (URISyntaxException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (ODataSerializerException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (Exception e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 

public String post(String url,InputStream message) throws Exception{ 
    HttpClient client = new DefaultHttpClient(); 
    HttpPost post = new HttpPost(url); 
    //post.addHeader("Content-Type", "application/json;odata.metadata=minimal"); 
    //post.addHeader("Accept", "application/json;odata=verbose"); 
    post.addHeader("Content-Type", "application/json"); 
    post.addHeader("Accept", "application/json"); 
    HttpEntity entity = new ByteArrayEntity(IOUtils.toByteArray(message)); 
    post.setEntity(entity); 
    HttpResponse response = client.execute(post); 
    String result = EntityUtils.toString(response.getEntity()); 
    return result; 
} 

insertDataは、2つのパラメータ、entityName + Entityを生成しました。 librairie org.apache.httpを使用して、httpメッセージをOData Serverに送信します。

関連する問題