我使用的是一种名为“Magik”的非常特殊的语言,我过去常常使用MSXML2来运行Web服务,但在我的一个项目中,我没有使用MSXML,我尝试了很多工作来改变MSXML。 DLL和测试不同版本的MSXML,使用MSXMLHttpServer和你可能想到的所有东西,我以某种方式吃了MSDN网站,但没有找到任何有用的东西。
现在我正在寻找调用SOAP Web服务的其他方法,有人说您可以通过解析和使用查询字符串将XML发布到Web方法地址,但我没有成功。
我也可以通过TCP / IP进行协商,我可以使用TCP / IP连接将XML发送到Web服务吗?
目前我正在将Magik连接到Java应用程序,当我需要调用Web服务时,我将请求发送到该Java应用程序(有一个Jar文件,它在Magik会话和Java应用程序之间创建数据总线)我还使用Axis技术编写了Java部分。但这是一项非常艰苦的工作,我应该改变很多东西,只保持我的项目,并与我消耗的Web服务的小变化相匹配。 以前使用MSXML非常简单,遗憾的是它现在不起作用了!
答案 0 :(得分:2)
首先请注意,您无法使用GET
仅拨打SOAP
网络服务POST
将使用SOAP
,GET可用于REST
但你刚才提到SOAP
。
我可以向您介绍两种方法,您可以使用它来调用Web服务而不是MSXML,它不再起作用。
- 您可以要求您的.Net Web服务提供商为自己的Web服务创建一个测试表单,并创建一个查询字符串,该字符串假设模拟表单上的数据,实际上您正在使用Web服务测试程序页面发送您的数据通过查询字符串到它,它将完成剩下的工作。
醇>
- 使用TCP / IP连接,在此方法中,您需要在xml上方创建一个标头,以设置Web服务使用者应填写的参数(请记住MSXML和Content-Type,Content-Length,SOAPAction,Host,... ...。) 然后将您的字符串转换为字节向量,因为所有可以创建TCPIP套接字的编程语言在向该连接输入或输出数据时只接受字节向量。翻译完字符串后,您就可以将数据发送到您的Web服务地址了。 请看下面的示例,了解如何创建要发送到TCPIP套接字的字符串。
醇>
POST /globalweather.asmx HTTP/1.1
Host: www.webservicex.net
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://www.webserviceX.NET/GetCitiesByCountry"
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance
xmlns:xsd=http://www.w3.org/2001/XMLSchema
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<GetCitiesByCountry xmlns="http://www.webserviceX.NET">
<CountryName>Egypt</CountryName>
</GetCitiesByCountry>
</soap:Body>
</soap:Envelope>
您可以将以上字符串发送到http://www.webservicex.net/globalweather.asmx
如果您需要有关如何使用TCPIP使用Web服务的详细信息,可以查看以下链接
http://www.codeproject.com/Articles/312530/Calling-Webservice-Using-TCP-IP-from-any-Programmi