Web服务请求调用SOAP请求缺少空参数我是Web服务和C#的新手,如果我的问题太简单,请原谅我。我四处搜索但找不到答案-至少找不到一个基于我的关键字的答案。我正在尝试通过C#(VisualWebDeveloper2010Express)调用Web服务,但收到响应错误。当我通过soapUI调用相同的Web服务时,我没有收到错误。当我将来自C#的SOAP请求与来自soapUI的SOAP请求进行比较时,C#SOAP请求缺少一个故意为空的参数。当我从soapUI请求中取出空参数时,我得到了同样的错误。对我来说,答案是让C#发送参数,即使它是空的。我通过将其设置为null或“”来尝试此操作,但无济于事。有没有办法强制我的C#Web服务客户端发送一个空参数或可能发送所有参数,即使它们没有值?WSDLC#SOAP(不起作用)edmsdevmy_aclspoonyforkmy_passwordedmsdevsoapUISOAP(有效)edmsdevmy_aclspoonyforkmy_passwordedmsdevEDRSearchXSDC#codeServiceReference1.UserCredentialsuc=newServiceReference1.UserCredentials();uc.userNamek="spoucfor";.password="我的密码";uc.docbase="edmsdev";ServiceReference1.ACLUsersRequestaurt=newServiceReference1.ACLUsersRequest();aurt.aclName="my_acl";.EDRSearchServiceSOAPImplClient();ServiceReference1.ACLUsersResponseaure=newServiceReference1.ACLUsersResponse();aure=client.getACLUsers(aurt,uc);首先,您可以尝试将aclObjectId属性声明为可序列化,即使它为null为此,您需要找到类ACLUsersRequest的定义并为该属性添加[System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]。它包含在SOAP请求中其次,您可以简单地将属性声明为string.Empty:EDRSearchServiceSOAPImplClientclient=newEDRSearchServiceSOAPImplClient();vartest=client.getACLUsers(newACLUsersRequest(){aclName="my_acl",docbase="qwe",aclObjectId=string.Empty},//这应该可以解决问题newUserCredentials(){userName="lala",password="123",文档库="qwe"});这是包含在SOAP请求中的,它等于如果这些方法都不起作用,那么您正在处理一个非常糟糕的Web服务提供商并且需要实现一个自写的客户端,该客户端将消息格式化为提供商强制的。到目前为止我唯一能找到的东西:http://www.w3.org/TR/2007/REC-soap12-part2-20070427/4.2.1应用程序可以处理缺少参数的调用,但也可能无法处理处理调用并返回错误。您是否手动生成了网络参考?你能提供合适的WSDL吗?+我可以更新这个答案对我来说,SOAP级别似乎没有多个参数,只是说XML或字符串参数。getAclUsers是否有多个参数?我承认我的SOAP知识有限,但WSDL中没有列出任何参数……也许您正在序列化XML,而XML序列化选项是您应该查看的内容?以上就是C#学习教程:Web服务请求调用SOAP请求缺少空参数分享的全部内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
