3

第一次在这里发海报!

我正在尝试通过 Java 使用 MS CRM 动态 Web 服务。我在这里按照本教程进行操作并设法使其正常工作。目前,我正在尝试通过 Web 服务从 CRM 中添加、编辑、选择和删除帐户。我已经设法使用下面的代码添加帐户和查询帐户。

新增帐户:

MicrosoftCrmSdkDataServicesService service = new MicrosoftCrmSdkDataServicesService(); Account act = new Account(); 
act.setName("test account");
try 
{ 
    service.addEntity(act);
}  
catch (Exception e)  
{ 
    e.printStackTrace(); 
}

查询账户(返回账户名):

MicrosoftCrmSdkDataServicesService service = new MicrosoftCrmSdkDataServicesService(); 
try 
{ 
    Query<Account> act1 = service.createAccountQuery("/AccountSet");
    Iterator<Account> accountTest = act1.iterator();
    while ( ((Iterator<Account>) accountTest).hasNext() )
    {
         String h = accountTest.next().getName().toString();
         if (h.equalsIgnoreCase("test account"))
         {
              System.out.print(hello);
         }
     }
}  
catch (Exception e)  
{ 
    e.printStackTrace(); 
}

因此,当我尝试使用 service.UpdateEntity(obj) 和 service.DeleteEntity(Obj) 方法从 CRM 更新和删除实体时,问题就来了。但是,在执行这些操作并传入帐户对象时,出现此错误:

Bad Request (400) - Can't update this entity http://domain:port/organization/xrmservices/2011/organizationdata.svc/AccountSet(9c1d0adc-08ed-e111-aece-00155d046501)
    at org.restlet.ext.odata.Service.updateEntity(Service.java:1243)
    at client.main(client.java:87)

由此它表明我正在将正确的对象放入 updateEntity 中,因为它会自动将正确的 guid 生成到查询 URL 中。但是它以错误的格式执行此操作。它应该是(因为这会加载 AccountSet 和该特定帐户的 RSS 提要):

http://domain:port/organization/xrmservices/2011/organizationdata.svc/AccountSet(guid'9c1d0adc-08ed-e111-aece-00155d046501')

我正在使用的 Web 服务方法是否已经过时并且不再有用了?有没有我没有意识到的公然做错的事情?

谢谢,山姆

4

1 回答 1

0

请检查此生成的类发送的 HTTP 标头。在更新的情况下,它应该是:

"X-HTTP-Method: MERGE"

在删除的情况下,它将是:

"X-HTTP-Method: DELETE"
于 2013-11-14T15:55:34.137 回答