加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

VB6.0调用C#中WebService的方法

(2011-11-07 00:00:00)
标签:

webservice

调用webservice

vb6.0

远程调用

跨平台服务

it

分类: 技术博论

     最近遇到了与WebService相关的应用问题,然而对WebService的应用不是很熟,如:需要实现在VB中调用Asp.net端的WebService方法来实现两端跨平台的数据应用等。下面我们就来看看有关WebService方面的知识吧!

一、通过WebService实现简单数据的调用

需下载msSoapToolkit20.exe或者msSoapToolkit30.exe
添加引用:Microsoft Soap Type Library
位置:”C:\Program Files\Common Files\MSSoap\Binaries\ MSSOAP1.dll”
    调用方法:
    Dim soapApp As New MSSOAPLib.SoapClient

示例:
添加一个button控件Command1。

    代码如下:
dim soapApp as new mssoaplib.soapclient
private sub command1_click()
soapApp.mssoapinit "http://localhost:2239/WebSoap.asmx?WSDL"
msgbox soapApp.HelloWorld()
end sub

二、通过WebService实现DataSet的调用
配置方式同方法一中。
VB端代码如下:
private sub command2_click()
Dim myXmlHttp As New XMLHTTP
Dim myXmlDoc As New DOMDocument
Dim myXmlNode As IXMLDOMNode
Dim rootElemnet As IXMLDOMNode
Dim adoStream As ADODB.Stream
Dim txt, myArray
Dim filename As String

myXmlHttp.Open "POST", "http://192.168.1.104/WebSoap.asmx/QueryList", False
myXmlHttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
myXmlHttp.send "ExceptOrderSn=1"

Do While myXmlHttp.readyState <> 4
DoEvents
Loop
myXmlDoc.Load myXmlHttp.responseXML

If myXmlDoc.documentElement Is Nothing Then
MsgBox "网络连接异常,请检查数据同步网址是否正确!", vbInformation
Else
Set rootElemnet = myXmlDoc.documentElement
For Each myXmlNode In rootElemnet.childNodes
txt = myXmlNode.Text
txt = Replace(txt, " ", ",")
myArray = Split(txt, ",")
msgbox myArray(0)
Next
On Error Resume Next
Kill filename
MsgBox "数据同步失败!", vbInformation, "信息提示"
End if
End Sub

Asp.net端源码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.Services;
using System.Web.UI.WebControls;
using System.Text;
using System.Data;
using System.Xml;

/// <summary>
///WebSoap 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
//若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
// [System.Web.Script.Services.ScriptService]
public class WebSoap : System.Web.Services.WebService
{

    public WebSoap()
    {

        //如果使用设计的组件,请取消注释以下行
        //InitializeComponent();
    }

    [WebMethod]
    public string HelloWorld()
    {
        return "Hello World";
    }
    [WebMethod]
    public XmlDataDocument QueryList()
    {
        StringBuilder strSql = new StringBuilder();
        strSql.Append("SELECT * FROM Users");
        DataSet ds = DbHelperSQL.Query(strSql.ToString());
        XmlDataDocument MyXmlDoc = new XmlDataDocument(ds);
        return MyXmlDoc;
    }
[WebMethod(Description="直接返回DataSet对象")]
public DataSet GetDataSet()
{
string sql = "select * from Customers";
Database db = DatabaseFactory.CreateDatabase();
DataSet ds = db.ExecuteDataSet(CommandType.Text,sql);
return ds;
}
}
    注:在本地测试WebService时是正常的,但当你将应用在IIS上发布后,你会发现,无法正常通过WebService的调用来操作数据,那如何来解决呢?
    原因是,应用发布后,IIS中没有对调用WebService的数据描述,从而无法具体的找到指定的数据节点。要实现远程正常调用WebService进行数据操作,还需要在修改你应用的web.config文件,找到<system.web>*****</system.web>节点,在*****中加入下面一段代码即可。

    <webServices >
      <protocols >
        <add name="HttpSoap"/>
        <add name="HttpPost"/>
        <add name="HttpGet"/>
        <add name="Documentation"/>
      </protocols>
    </webServices>



本文参考:http://blog.sina.com.cn/s/blog_48b06b330100hx18.html

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有