使用ASP.NET的PHP SOAP WebService
发布时间:2020-12-16 07:42:59 所属栏目:asp.Net 来源:网络整理
导读:我在使用ASP.NET尝试使用 PHP SOAP Web服务时遇到了一些重大问题.有问题的Web服务基于PHP SOAP扩展,并由以下WSDL描述: ?xml version="1.0" encoding="UTF-8" ?definitions name="MyServices" targetNamespace="http://mydomain.com/api/soap/v11/services"
我在使用ASP.NET尝试使用
PHP SOAP Web服务时遇到了一些重大问题.有问题的Web服务基于PHP SOAP扩展,并由以下WSDL描述:
<?xml version="1.0" encoding="UTF-8" ?> <definitions name="MyServices" targetNamespace="http://mydomain.com/api/soap/v11/services" xmlns:tns="http://mydomain.com/api/soap/v11/services" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsd1="http://mydomain.com/api/soap/v11/services" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns="http://schemas.xmlsoap.org/wsdl/"> <types> <schema targetNamespace="http://mydomain.com/api/soap/v11/services" xmlns="http://www.w3.org/2001/XMLSchema"> <complexType name="ServiceType"> <all> <element name="id" type="xsd:int" minOccurs="1" maxOccurs="1" /> <element name="name" type="xsd:string" minOccurs="1" maxOccurs="1" /> <element name="cost" type="xsd:float" minOccurs="1" maxOccurs="1" /> </all> </complexType> <complexType name="ArrayOfServiceType"> <all> <element name="Services" type="ServiceType" minOccurs="0" maxOccurs="unbounded" /> </all> </complexType> </schema> </types> <message name="getServicesRequest"> <part name="postcode" type="xsd:string" /> </message> <message name="getServicesResponse"> <part name="Result" type="xsd1:ArrayOfServiceType"/> </message> <portType name="ServicesPortType"> <operation name="getServices"> <input message="tns:getServicesRequest"/> <output message="tns:getServicesResponse"/> </operation> </portType> <binding name="ServicesBinding" type="tns:ServicesPortType"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="getServices"> <soap:operation soapAction="http://mydomain.com/api/soap/v11/services/getServices" /> <input> <soap:body use="encoded" namespace="urn:my:services" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /> </input> <output> <soap:body use="encoded" namespace="urn:my:services" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /> </output> </operation> </binding> <service name="MyServices"> <port name="ServicesPort" binding="tns:ServicesBinding"> <soap:address location="http://mydomain.com/api/soap/v11/services"/> </port> </service> </definitions> 我可以在Visual Studio中从此WSDL成功生成代理类,但在尝试调用getServices方法时,我遇到了异常: System.Web.Services.Protocols.SoapHeaderException:过程’字符串’不存在 在SOAP服务器端检查原始发布数据后,我的PHP SOAP客户端正在发出如下请求: <?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <SOAP-ENV:Body> <postcode xsi:type="xsd:string">ln4 4nq</postcode> </SOAP-ENV:Body> </SOAP-ENV:Envelope> 而.Net代理类正在执行此操作: <?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://mydomain.com/api/soap/v11/services" xmlns:types="http://mydomain.com/api/soap/v11/services/encodedTypes" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <xsd:string xsi:type="xsd:string">LN4 4NQ</xsd:string> </soap:Body> </soap:Envelope> 我只能假设邮政编码参数发送方式的不同之处在于问题所在,但主要是PHP开发人员,我不知道这里发生了什么.我有一种感觉,我只是遗漏了一些在我的WSDL中至关重要的东西,因为我看过无数的“使用.Net消费PHP SOAP Web服务”的例子,似乎表明它“只是有效”. 关于我在哪里滑倒的任何建议将不胜感激.我现在已经花了差不多一整天了;-) 提前致谢, 杰米 解决方法
很抱歉找到答案而不是评论我还没有足够的声誉……
您应该尝试使用SOAP-UI测试您的Web服务(它们有免费版本),因此您将知道问题是客户端还是服务器端. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – ajax中的Updatepanel总是运行page_load事件?
- 将本地化的resources.resx文件转换为asp.net MVC中的javasc
- asp.net – .NET OutputCache指令不起作用
- asp.net-mvc-3 – 登录后重定向MVC3
- 如何在asp.net中验证日期
- asp.net – 随机字符串生成器在多个调用中创建相同的字符串
- asp.net – Ajax自动完成扩展程序并获取所选项目的ID?
- asp.net – 如何关闭radwindow管理器窗体服务器端按钮单击
- asp.net – System.Reflection.Assembly.LoadFile锁定文件
- 剃刀 – 输入隐藏显示不正确的ID(Guid.Empty)
推荐文章
站长推荐
- asp.net – AjaxFileUpload回发false
- asp.net-mvc – MVC将null反序列化为“null”(字
- asp.net – AsyncPostBackTrigger找不到LinkBut?
- asp.net-mvc – 实体框架删除记录
- asp.net-mvc – 尝试使用Moq模拟HtmlHelper时抛出
- asp.net-mvc – ModelMetadata.Watermark和MVC V
- asp.net-core – 在发布ASP.NET Core应用程序时自
- asp.net-mvc – 用于ninject的ASP.NET MVC 3 Pre
- asp.net – EF更新记录属性后在SaveChanges()上抛
- asp.net-mvc-4 – 返回Web API中的自定义错误对象
热点阅读