在VB6中怎样调用Web Service?

LoveDana 2003-07-31 01:46:56
如题,谢谢。

如果正确解题,再送400分!
...全文
115 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
LoveDana 2003-07-31
  • 打赏
  • 举报
回复
请到以下帖子回复结帖子:

http://expert.csdn.net/Expert/TopicView1.asp?id=2093496
http://expert.csdn.net/Expert/TopicView1.asp?id=2093474
lihonggen0 2003-07-31
  • 打赏
  • 举报
回复
如何检测电脑是否已经按照过.Net Framework了?

check the registry

"HKLM\Software\Microsoft\.NETFramework\InstallRoot"

or check for
C:\WINNT\Microsoft.NET


判断注册表:

如果存在就认为是已经安装:
\LocalMachine\software\microsoft\.NetFrameWork

下面的
InstallRoot(=C:\WINDOWS\Microsoft.NET\Framework\)存放安装目录,不同的版本安装在不同的目录下.

Policy\v1.0\有版本信息.


在部署中设定检查是否安装过.net framework
http://support.microsoft.com/default.aspx?scid=kb;zh-cn;315291
LoveDana 2003-07-31
  • 打赏
  • 举报
回复
效果不错,但有更简单的方法吗?要客户端安装这么一个东西有点麻烦

还有,如何在vb6里面判断.net framework是否安装了?注册表方法除外。
lihonggen0 2003-07-31
  • 打赏
  • 举报
回复
上面包含了原文
lihonggen0 2003-07-31
  • 打赏
  • 举报
回复
程序下载地址:

http://www.mscommunity.com/CommunityWish/images/articles/UpVBWs.rar
LoveDana 2003-07-31
  • 打赏
  • 举报
回复
to:lihonggen0(李洪根,用.NET,标准答案来了)

请问原文在哪里?
LoveDana 2003-07-31
  • 打赏
  • 举报
回复
soapclient.mssoapinit
http://192.168.0.3:8080/yundan/Service1.WSDL","Service1","Service1Soap",""

其中的8080是否必须指定?
lihonggen0 2003-07-31
  • 打赏
  • 举报
回复
在vb6中调用vb.net封装的模块

--- 利用 Web Service

前言:

VB.net是基于.net FrameWork进行开发的语言。以前一些在VB6中实现比较复杂的功能在VB.net中可以轻松的实现。比如:高强度的加密算法,以前我们经常是用VC++把这些算法开发为组件,然后在VB6中调用。现在我们可以直接用VB.net完成所有开发。

考虑到版本的兼容、开发的效益等问题,如何在不放弃VB6的基础上,尽可能利用VB.net的便利性。这就是本系列文章要讨论的主题。本系列包括下面两篇文章:

一:利用CCW,从Com组件中调用.net组件,实现VB6中调用VB.net写的组件;
二:利用Web Service 在VB6和VB.net之间通讯;

本文讨论利用 Web Service 在VB6和VB.net之间通讯。

Web Service 、Soap简介

Web Service是通过HTTP执行远程方法调用的一种方法,其中的HTTP可以利用Soap(简单对象访问协议Simple Object Access Protocol)。在.net中,Web Service的开发变得更容易,客户端调用Web Service也很容易。如果不是通过.net调用 Web Service 会比较复杂。这时候,推荐使用Microsoft SOAP Toolkit ,它会让调用变得简单。

代码演示

下面演示使用 Web Service 完成加密、解密运算,然后客户端vb6程序通过Soap调用这个 Web Service 。这个演示版使用的Soap是:Microsoft SOAP Toolkit Version 3。可以在微软站点获得最新的Soap SDK。Microsoft SOAP Toolkit Version 3 SDK 下载地址如下:(http://www.microsoft.com/downloads/release.asp?releaseid=32832)。

步骤:

一、新建一个基于 VB.net 的 Web Service 工程;

二、按照下面代码修改代码;



Imports System.Security.Cryptography
Imports System.IO
Imports System.Web



Private ReadOnly arrDefaultDESKey As Byte()
Private ReadOnly arrDefaultDESIV As Byte()

Public Sub New()
MyBase.New()
'This call is required by the Web Services Designer.
InitializeComponent()
'Add your own initialization code after the InitializeComponent() call
arrDefaultDESKey = New Byte() {42, 16, 93, 156, 78, 4, 218, 32}
arrDefaultDESIV = New Byte() {55, 103, 246, 79, 36, 99, 167, 3}
End Sub


<WebMethod()> _
Public Function DecodeString(ByVal strtemp As String) As String
Return DESDecode(UrlEncrypt(strtemp, False), arrDefaultDESKey, arrDefaultDESIV)
End Function

<WebMethod()> _
Public Function EncodeString(ByVal strtemp As String) As String
Return UrlEncrypt(DESEncode(strtemp, arrDefaultDESKey, arrDefaultDESIV), True)
End Function

Private Function DESDecode(ByVal strtemp As String, ByVal m_DESKey As Byte(), ByVal m_DESIV As Byte()) As String
Dim objDES As DESCryptoServiceProvider
objDES = New DESCryptoServiceProvider
Dim arrInput As Byte()
arrInput = Convert.FromBase64String(strtemp)
Dim objMemoryStream As MemoryStream
objMemoryStream = New MemoryStream(arrInput)
Dim objCryptoStream As CryptoStream
objCryptoStream = New CryptoStream(objMemoryStream, objDES.CreateDecryptor(m_DESKey, m_DESIV), CryptoStreamMode.Read)
Dim objStreamReader As StreamReader
objStreamReader = New StreamReader(objCryptoStream)
Return objStreamReader.ReadToEnd()
End Function

Private Function DESEncode(ByVal strtemp As String, ByVal m_DESKey As Byte(), ByVal m_DESIV As Byte()) As String
Dim objDES As DESCryptoServiceProvider
objDES = New DESCryptoServiceProvider
Dim objMemoryStream As MemoryStream
objMemoryStream = New MemoryStream
Dim objCryptoStream As CryptoStream
objCryptoStream = New CryptoStream(objMemoryStream, objDES.CreateEncryptor(m_DESKey, m_DESIV), CryptoStreamMode.Write)
Dim objStreamWriter As StreamWriter
objStreamWriter = New StreamWriter(objCryptoStream)
objStreamWriter.Write(strtemp)
objStreamWriter.Flush()
objCryptoStream.FlushFinalBlock()
objMemoryStream.Flush()
Return Convert.ToBase64String(objMemoryStream.GetBuffer(), 0, objMemoryStream.Length())
End Function

'bSign true 加密 False 解密
' strTemp
Private Function UrlEncrypt(ByVal strTemp As String, ByVal bSign As Boolean) As String
If bSign Then
Return HttpUtility.UrlEncode(strTemp)
Else
Return HttpUtility.UrlDecode(strTemp)
End If
End Function




说明:
a、这里的Web Service方法必须是Public的。
b、范例中,除了使用DES加密、解密外,还额外对加密、解密后的结果进行了URL编码,这样可以避免加密、解密后字符串中间出现结束符,而被有些编译环境认作字符串到此结束问题。

三、编译工程,Web Service 开发完毕。可以看得出,这里Web Service的开发比上篇文章使用CCW的开发要简单的多。

下面编写客户端调用:

一、确认安装了:Microsoft SOAP Toolkit Version 3 SDK。

二、新建一个Standard Exe工程,具体看文章后的源代码;

三、单击Project,然后单击References打开引用对话框,为工程选择 Microsoft SOAP Type Library v3.0 引用,如下图:



说明: 调用Web Service 有很多种方法,这里使用的是Microsoft SOAP Toolkit 的 High-Level API for SOAP Messages。 它可以很方便的完成Web Service客户端的开发。


四、调用 Web Service 增加下面代码:


Option Explicit
Private Const WSURL = "http://ghj1976.csdn.net:81/EncryptWS/Encrypt.asmx?wsdl"

Private Sub Command1_Click()
Dim soapClient3
Set soapClient3 = CreateObject("MSSOAP.SoapClient30")
On Error Resume Next
Call soapClient3.MSSoapInit(WSURL, "", "")
If Err <> 0 Then
MsgBox Err.Description
End If
Text2.Text = soapClient3.EncodeString(Text1.Text)
If Err <> 0 Then
MsgBox Err.Description
End If
Set soapClient3 = Nothing
If Err <> 0 Then
MsgBox Err.Description
End If
End Sub

Private Sub Command2_Click()
Dim soapClient3
Set soapClient3 = CreateObject("MSSOAP.SoapClient30")
On Error Resume Next
Call soapClient3.MSSoapInit(WSURL, "", "")
If Err <> 0 Then
MsgBox Err.Description
End If
Text1.Text = soapClient3.DecodeString(Text2.Text)
If Err <> 0 Then
MsgBox Err.Description
End If
Set soapClient3 = Nothing
If Err <> 0 Then
MsgBox Err.Description
End If
End Sub

Private Sub Form_Load()
Text1.Text = "你好么,测试!"
End Sub



五、编译程序并执行。

源代码下载:下载

小结:

利用 Web Service 在VB6和VB.net之间通讯,这种方法对客户端环境的要求很低,而且核心代码被封装在服务器端,便于升级维护。推荐使用。

关于作者:

郭红俊

百联美达美公司网络开发工程师(http://www.csdn.net)

参考文献:

Microsoft SOAP Toolkit Version 3帮助文档。


自由之眼 2003-07-31
  • 打赏
  • 举报
回复
需下载msSoapToolkit20.exe
引用:MSSOAP.SoapClient
实例:
Dim soapclient as MSSOAP.SoapClient
Const WSDL_URL = "http://192.168.0.3/yundan/service1.wsdl"
set soapclient = Server.CreateObject("MSSOAP.SoapClient")
soapclient.ClientProperty("ServerHTTPRequest") = True
soapclient.mssoapinit
http://192.168.0.3:8080/yundan/Service1.WSDL","Service1","Service1Soap",""
Dim res as string
res = soapclient.test(23, 34)

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧