我工作的应用程序需要向外部系统发送数据。该系统将具有 Web 服务(C#、Java 或 PHP),我需要使用它。由于客户端数量和外部系统一样多,所以我需要获取用户输入的 WSDL 文件、方法名称和参数,并将数据发送到外部系统。
因此,我正在尝试使用这里提供的代码动态调用 Web 服务。
我测试了一些免费的 Web 服务,可以在这里找到。
我从 WSDL 文件中找到 SOAP 位置、方法名称和参数,并将其作为输入。以下服务按预期运行。
因此,我正在尝试使用这里提供的代码动态调用 Web 服务。
我测试了一些免费的 Web 服务,可以在这里找到。
我从 WSDL 文件中找到 SOAP 位置、方法名称和参数,并将其作为输入。以下服务按预期运行。
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信封中。
对于http://soaptest.parasoft.com/calculator.wsdl,即使我们忽略xmlns:cal="http://www.parasoft.com/wsdl/calculator/,它也可以成功执行。
但是对于http://www.predic8.com:8080/crm/CustomerService?wsdl,如果我忽略xmlns:ns="http://predic8.com/wsdl/crm/CRMService/1/,它会引发内部服务器错误。
请分享如何在这里实现通用性。