如何在不使用MSXML的情况下调用ASP.Net制作的Web服务?

时间:2015-08-30 22:50:32

标签: web-services soap msxml

我使用的是一种名为“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非常简单,遗憾的是它现在不起作用了!

1 个答案:

答案 0 :(得分:2)

首先请注意,您无法使用GET仅拨打SOAP网络服务POST将使用SOAP,GET可用于REST但你刚才提到SOAP

我可以向您介绍两种方法,您可以使用它来调用Web服务而不是MSXML,它不再起作用。

使用测试表格(Web服务测试页面)

  
      
  1. 您可以要求您的.Net Web服务提供商为自己的Web服务创建一个测试表单,并创建一个查询字符串,该字符串假设模拟表单上的数据,实际上您正在使用Web服务测试程序页面发送您的数据通过查询字符串到它,它将完成剩下的工作。
  2.   

使用TCPIP

  
      
  1. 使用TCP / IP连接,在此方法中,您需要在xml上方创建一个标头,以设置Web服务使用者应填写的参数(请记住MSXML和Content-Type,Content-Length,SOAPAction,Host,... ...。)   然后将您的字符串转换为字节向量,因为所有可以创建TCPIP套接字的编程语言在向该连接输入或输出数据时只接受字节向量。翻译完字符串后,您就可以将数据发送到您的Web服务地址了。   请看下面的示例,了解如何创建要发送到TCPIP套接字的字符串。
  2.   
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