会用 vb 调用 WebService 的朋友请进?

hyifeng 2003-08-18 03:25:26
我和一个朋友合作为学校编一个网站,
我们做了一个功能是客户端通过SOAP下载课程成绩


我已经知道如何处理返回简单数据类型
但课程成绩是一个类模块,返回一个又是课程成绩的Collection,

请问谁能给我这样的一个例子?
...全文
64 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jokesmith 2003-08-20
  • 打赏
  • 举报
回复
编写客户端调用:

一、确认安装了: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
Call soapClient3.DoSomething()
hyifeng 2003-08-19
  • 打赏
  • 举报
回复
你连 vc 也懂!了不起呀,我只懂VB。
我的朋友(负责服务端的哪个)他也像你,比较多才多艺啦,他常常取笑我老抱着VB。这次如果我做不出来,恐怕还是要被他取笑。 :(

我使用了Microsoft Soap Type Library 和 Microsoft XML. v3.0 。
可是我发生了一个莫名其妙的错误:服务调用失败。

我朋友的WebSevice的服务地址:http://192.168.1.27/WebServiceCert/WebServiceCert.asmx?WSDL

我那边这样写:
Dim Marks As Collection
Dim sc As MSSOAPLib.SoapClient
sc = CreateObject(MSSOAPLib.SoapClient)
Call sc.mssoapinit("http://192.168.1.27/WebServices/WebServiceMarks.asmx?WSDL", "", "")
Set Marks = sc.ExportMarks("student1","学期")


然后他说找不到ExportMarks方法。
是不是我漏做了一些工作?
jokesmith 2003-08-19
  • 打赏
  • 举报
回复
其实道理很简单,就是把一个对象的实例保存为文本流(文件),然后用Soap传递这个文本串,到另一头后恢复出这个对象。这个文本流最好是xml格式的,这样就能自解释了,不必太多的协议接口。没有现成的例子,给各伪代码的吧:

Class A
private Integer i
private Sub DoSomething()
public String str
...

一般Class的Serialize只需要保存数据成员,可以参考MFC的CDocument::Serialize()方法。
这里对于Class A就可以这样做:
Public Function SerializeOut() As String
Dim sXML As String;

sXML = "<?xml version=""1.0""?>"
SXML = SXML & "<ClassA>"
SXML = SXML & "<i>" & A.i & </i>"
SXML = SXML & "<str>" & A.str & </i>"
SXML = SXML & "</ClassA>"

SerializeOut = sXML
End Function

接收方从Soap中得到这个xml串,在解析出i,str,然后恢复出Class A的一个实例。

这个例子为了省事,xml流很简单,其实又是要带上类描述,变量类型等等。

hyifeng 2003-08-19
  • 打赏
  • 举报
回复
TO jokesmith(胜利电波):
谢谢你拉,自从csdn的加分规则变了后,我就一直处于极度贫困之中 :(

我的问题就是在于防火墙,我们学校是内部网通过一个网关对外连接,就连qq的文件传输都不能。
网站由我的朋友负责,他使用asp.net开发的。所以我考虑使用WebService。DCOM和Remoting

能给我一个例子么?
jokesmith 2003-08-18
  • 打赏
  • 举报
回复
哈哈……webservice的本质是xml,所以一定要使文本的东东。不然就不能穿透防火墙,那就叫DCOM或者Remote Access(.Net Remoting)。

你的问题是要把要处理对象序列化(Serialize),就向recordset可以save为xml,然后又可以从xml转为recordset。这是正道。不然及时做出来了也不是webservice:)

BTW,你的分好像很少啊?
hyifeng 2003-08-18
  • 打赏
  • 举报
回复
给我 一个连接也可以

1,502

社区成员

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

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