我正在使用基于.NET的Web服务,其中一些API调用可以通过HTTP POST / GET访问,但在其他API调用中只有SOAP 1.1 / 1.2可用。
已经开发API的公司已回复我说了以下内容,我想知道他是否试图将羊毛拉过我的眼睛,或者他是否说出真相。他的回答并不适合我,所以我想我会尝试检查但是找不到答案。
我觉得我很奇怪 没有在上面指定任何东西 其他方法,以使它们 可以使用HTTP Post或HTTP访问 获得协议。我已全球设定它 所以他们都应该可以访问。 我一直在研究这个问题 似乎是HTTP Post和HTTP Get 协议只能用于 使用简单类型的方法,例如 方法采用的是整数 参数。您列出的方法 下面采取更复杂的对象,例如 可空类型或自定义对象。 但是,可以使用SOAP协议 用这种复杂的方法。
答案 0 :(得分:0)
他的解释是正确的。 POST / GET只允许使用典型的基元 - int,string,bool等。或者更确切地说,可以用简单的名称/值对解释的参数。 SOAP协议处理.Net中的Web服务的XML方面(听起来他正在谈论遗留的ASMX服务。)
更新:这里有一点背景。听起来你的联系人对.Net网络服务并不了解,所以虽然他的描述是基于他所知道的,但它肯定不是对环境的限制;他只需要做更多的工作。
答案 1 :(得分:0)
他不对。您可以使用DataContractSerializer发送和GET复杂类型。
以下是我最近回答另一个问题的一些代码:
要POST参数,需要使用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)
客户端代码使用WCF Rest Starter工具包中的Microsoft.Http库。