0

我很少使用我的应用程序中的 http 调用 CRM 应用程序。我需要知道是通过 SOAP 还是 REST。我能知道它是通过 REST 还是 SOAP 使用 url 吗?或者有没有办法找到如何确定协议。代码片段如下:

HttpRequestBase request = new HttpGet(url);
request.setParams(/*some HttpParams*/);


ResponseHandler<String> responseHandler = new UnicodeResponseHandler();
String response = httpClient.execute(request, responseHandler);

/* where httpClient is an instance of org.apache.http.client.HttpClient */
/* where url is a http url */
4

4 回答 4

1

我对这个问题有点困惑。有几种不同的方式来查询 Crm。带 OData 的 REST、带 WSDL 的 SOAP、不带 WSDL 的 SOAP。

您可以很容易地从 Url 中分辨出区别,因为存在不同的 SOAP 和 REST 端点。查看设置 > 自定义 > 开发人员资源。

在此处输入图像描述

我真的不明白这种情况,你要动态地使用一个(或两个?),因为每个的用法都完全不同。

如果这只是关于 CRM 2011 SOAP & REST 的一般性问题,我建议您查看MSDN

于 2012-10-09T11:04:20.847 回答
1

基本上HttpClient可用于进行 REST 和 SOAP 调用,请查看此链接以了解 SOAP 调用用法。

主要区别在于您发出请求和解析响应的方式。

于 2012-10-09T10:27:08.360 回答
0

即 REST,您正在创建一个 http get 并设置 HTTP 参数(不包括soap)并获得响应。响应可以是普通的旧字符串、json 或 xml...

于 2012-10-09T10:25:18.567 回答
0

据我所知,没有这样的方法。

如果你很幸运 - 如果这是 SOAP Web 服务,URL 将返回给你 WSDL,但这不是强制性的。您可能会尝试在 URL 中添加“ ?wsdl”——但再一次,这是 Java 的一些 SOAP Web 服务框架的约定——但根据规范仍然不是强制性的。

SOAP 有效负载基于 XML,因此如果 URL 返回其内容类型不是“application/xml”的内容,您可能会认为这是 REST Web 服务。此外,SOAP 仅使用 POST 方法,而 REST 使用 GET,以及其他 HTTP 方法 - PUT 和 DELETE。

例如,在您的代码中,您使用的是 GET 方法,因此我们可能认为这是 RESTFul Web 服务,但谁说这不是您的代码中的错误,而您实际上需要在这里使用 POST?但是再一次 - 这种方法并不安全,因为 RESTFul Web 服务可能会返回 XML 格式的数据。

您将必须实现一些发现机制,或者可能使用您的服务的设置主机/IP 地址来配置您的应用程序,并为每个服务确定配置中这是 SOAP 还是 REST。

于 2012-10-09T10:25:46.660 回答