Php ASP.NET Web服务通过REST发布/获取不可用?

Php ASP.NET Web服务通过REST发布/获取不可用?,php,asp.net,web-services,rest,soap,Php,Asp.net,Web Services,Rest,Soap,我正在使用一个基于.NET的Web服务,其中一些API调用可以通过HTTP POST/GET访问,但在其他服务上只有SOAP 1.1/1.2可用 开发API的公司已经回复我说了以下几句话,我想知道他是想蒙蔽我,还是说的是实话。他的回答让我感到不舒服,所以我想我会尝试检查一下,但一直没有找到答案 我觉得这很奇怪,因为我 没有在列表中指定任何内容 其他方法,以使其 可使用HTTP Post或HTTP 获取协议。我已经定好了 因此,它们都应该是可访问的。 我一直在调查这件事,而且 似乎HTTP Pos

我正在使用一个基于.NET的Web服务,其中一些API调用可以通过HTTP POST/GET访问,但在其他服务上只有SOAP 1.1/1.2可用

开发API的公司已经回复我说了以下几句话,我想知道他是想蒙蔽我,还是说的是实话。他的回答让我感到不舒服,所以我想我会尝试检查一下,但一直没有找到答案

我觉得这很奇怪,因为我 没有在列表中指定任何内容 其他方法,以使其 可使用HTTP Post或HTTP 获取协议。我已经定好了 因此,它们都应该是可访问的。 我一直在调查这件事,而且 似乎HTTP Post和HTTP Get 协议只能与一起使用 使用简单类型的方法,例如。 其中一个方法接受一个整数 参数您列出的方法 下面是更复杂的对象,例如。 可为空的类型或自定义对象。 但是,可以使用SOAP协议 用这种复杂的方法


他的解释是正确的。POST/GET只允许典型的原语——int、string、bool等,或者更确切地说,是可以用简单的名称/值对解释的参数。SOAP协议处理.Net中web服务的XML端(听起来他在谈论遗留的ASMX服务)


更新:这里有一点背景。听起来你的联系人对.NETWeb服务了解不多,所以虽然他的描述是基于他所知道的,但这肯定不是环境的限制;他只需要多做一点工作。

他错了。您可以使用DataContractSerializer发送和获取复杂类型

下面是我最近用来回答另一个问题的一些代码:

为了发布参数,需要使用DataContractSerializer对其进行序列化。e、 g,

在服务器上:

[OperationContract]
[WebInvoke(Method="POST",UriTemplate = "/foos")]
void PostFoo(Foo foo) {}
在客户端:

var foo = new Foo();
var content = HttpContentExtensions.CreateDataContract<Foo>(foo);
var client = new HttpClient("http://example.org/service.svc/foos");
client.Post(content)
var foo=new foo();
var content=HttpContentExtensions.CreateDataContract(foo);
var client=新的HttpClient(“http://example.org/service.svc/foos");
client.Post(内容)

客户机代码使用WCF Rest初学者工具包中的Microsoft.Http库。

为了让我清楚您的意思,我可以给您举个例子吗?API调用之一是通过提供成员编号返回家庭地址。返回值应该是为该个人保留的地址字段的XML。这是否符合您提到的不兼容性?不,返回值肯定是复杂的XML。SOAP与复杂的参数结构一起发挥作用。而且,除了现成的ASMX之外,您的联系人似乎对.NETWeb服务一无所知。通过自定义或使用WCF中的功能,这些限制当然可以避免。