C# 使用HttpWebRequest动态使用web服务,无需服务引用
我工作的应用程序必须将数据发送到外部系统。系统将有一个web服务(c#或java或php),我需要使用它。因为外部系统和客户端一样多,所以我需要获取WSDL文件、方法名和参数作为用户输入,并将数据发送到外部系统 因此,我尝试使用可用代码动态调用web服务 我测试了一些可用的免费web服务 我从WSDL文件中找到SOAP位置、方法名称和参数,并将其作为输入 以下服务按预期工作C# 使用HttpWebRequest动态使用web服务,无需服务引用,c#,web-services,soap,wsdl,httpwebrequest,C#,Web Services,Soap,Wsdl,Httpwebrequest,我工作的应用程序必须将数据发送到外部系统。系统将有一个web服务(c#或java或php),我需要使用它。因为外部系统和客户端一样多,所以我需要获取WSDL文件、方法名和参数作为用户输入,并将数据发送到外部系统 因此,我尝试使用可用代码动态调用web服务 我测试了一些可用的免费web服务 我从WSDL文件中找到SOAP位置、方法名称和参数,并将其作为输入 以下服务按预期工作 http://soaptest.parasoft.com/calculator.wsdl Location - http:
http://soaptest.parasoft.com/calculator.wsdl
Location - http://ws1.parasoft.com/glue/calculator
Method Name - add
Parameter - x,y
但当我为另一个免费服务提供SOAP位置和方法名时,它抛出500个内部服务器错误
http://www.predic8.com:8080/crm/CustomerService?wsdl
Location - http://www.predic8.com:8080/crm/CustomerService
Method Name - getAll
通过在soapUI中测试上述wsdl,我确认了这些输入是正确的。在soapUI请求窗口中使用相同的位置
我不知道它为什么会出错。请帮助我理解它
另外,请让我知道是否可以从WSDL文件获取服务位置,并使用HttpWebRequest
获取响应。我担心,不管用于实现web服务的技术如何,这种调用web服务的方法是否有效
编辑:
问题似乎与SOAP信封有关
因为即使我们忽略xmlns:cal=”http://www.parasoft.com/wsdl/calculator/,它将成功执行
但对于,如果忽略xmlns:ns=”http://predic8.com/wsdl/crm/CRMService/1/,它抛出内部服务器错误
http://www.predic8.com:8080/crm/CustomerService?wsdl
Location - http://www.predic8.com:8080/crm/CustomerService
Method Name - getAll
请在此处分享我是如何通用的问题似乎在于您使用的请求数据。请求验证失败,错误也失败 如果导入提供的,并验证创建请求,那么问题就很明显了 在
Person
和Customer
下有一个元素id
,数据必须遵循架构。/common/1
下定义的特定模式
下面是模式引用,它具有simpleType
限制:
<xsd:simpleType name="IdentifierType">
<xsd:annotation>
<xsd:documentation>Identifier for business objects.</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="xsd:string">
<xsd:pattern value="[A-Z]{2}-\d{5}"/>
</xsd:restriction>
</xsd:simpleType>
业务对象的标识符。
因此,id
值应该类似于AA-12345
,即两个大写字母,连字符(-),后跟5位数字
按照上述模式更改您的请求,您应该是优秀的
希望这会有帮助。您能显示导致错误的请求吗?技术混蛋,您是否有机会查看答案,看看是否有帮助?时间已经过去,但此链接可能会帮助某人: