使用.NET的HTTP POST复杂请求

时间:2010-02-18 18:12:43

标签: .net web-services soap http-post

我有一个使用.NET 3.5(VS2008)开发的Web服务方法,它需要一些字符串(用户名,密码,主题,文件类型)和用Base64编码的二进制文档。

我启用了SOAP和HTTP POST。虽然SOAP工作正常,但无法发送HTTP POST请求。服务器响应“服务器无法处理请求.--->根级别的数据无效。第1行,第1位”。

客户正在使用此方法从其应用程序上传文档。

我被告知.NET不支持使用HTTP POST的复杂结构。有什么方法可以支持这个吗?

2 个答案:

答案 0 :(得分:1)

.NET确实支持使用带有httpBinding的POX(普通旧xml)的复杂结构。这是一篇解释如何设置的文章: http://fluxcapacity.net/2007/11/06/how-to-create-restpox-web-services-with-wcf/

注意:所有SOAP,XML和JSON dto更新仍然可以通过HTTP POST工作 - SOAP只是使用额外的标记包装您的有效负载,这实际上只会增加网站(即Ajax)客户端的额外开销和复杂性。

如果您希望同一个Web服务可以通过SOAP以及其他端点工作,例如您可能对此opensource webservices framework感兴趣的XML或JSON,它可以启用所有这些端点而无需任何其他配置。

答案 1 :(得分:0)

听起来您想要从桌面应用程序转移到基于asp的Web应用程序。

虽然这通常是一个好主意,但我认为你会在试图通过http /表单将文件发布到你的网络服务上时进行艰苦的战斗。虽然从技术上讲,我可能很难想到实现。

使用表单作为代理,输入变量和提交给表单的文件输入可能会更好运,例如:一个webform,并使用webform上的代码隐藏来启动你的webservice类的一个实例(不需要使用代理,你已经在线上)。

如果这没有意义,请告诉我,如果无法使其适合您的情况,请更新您的问题,以更清楚地说明您想要的结果。

如果您通过Ajax执行此操作,请使用[ScriptService]属性装饰您的服务类,并通过xmlhttp发布JSON。您可以轻松发送复杂的参数。

请参阅http://www.codeproject.com/Articles/38999/Consuming-ASP-net-WebServices-WCF-Services-and-sta.aspx了解相关说明。

如果您不是,请详细说明发布内容以及如何打包数据。

相关问题