svc6 控制台程序利用SoapToolkit3.0调用WebService

1. 首先要安装SoapToolkit3.0安装包并安装(我的安装目录为:C:\Program Files\Common Files)

2. 新建vc控制台程序(空项目),项目名称:WinConsole6InvokeWebService,添加一个c++源文件(main.cpp)

3。main.cpp源代码

#include <stdio.h>
#include <iostream>
#include <vector>
 
#import "msxml4.dll"
 
using namespace std;
using namespace MSXML2;
 
#import "C:\Program Files\Common Files\MSSoap\Binaries\MSSOAP30.dll"         exclude("IStream", "IErrorInfo", "ISequentialStream", "_LARGE_INTEGER",         "_ULARGE_INTEGER", "tagSTATSTG", "_FILETIME")
 
using namespace MSSOAPLib30;
 
void query(char* EndPointURL, char* Namespace, char* method, vector<string>& v)
{
    ISoapSerializerPtr Serializer;
    ISoapReaderPtr Reader;
    ISoapConnectorPtr Connector;
     
    // Connect to the service
    Connector.CreateInstance(__uuidof(HttpConnector30));
    Connector->Property["EndPointURL"] = EndPointURL;        // 接口位置
    Connector->Connect();                                    // 和服务器连接
     
    // Begin message
    Connector->Property["SoapAction"] = _bstr_t(Namespace) + _bstr_t(method);
    Connector->BeginMessage();
 
    Serializer.CreateInstance(__uuidof(SoapSerializer30));
 
    // 将serializer连接到connector的输入字符串
    Serializer->Init(_variant_t((IUnknown*)Connector->InputStream));
 
    // 创建SOAP消息
    Serializer->StartEnvelope("soap", "", "");
    Serializer->StartBody("body");
    Serializer->StartElement(method, Namespace, "", ""); // 命名空间必须有
 
    for(vector<string>::iterator it = v.begin(); it != v.end(); it++)
    {
        Serializer->StartElement("username", Namespace, "", "");
        Serializer->WriteString(it->c_str());
        Serializer->EndElement();
    }
 
    Serializer->EndElement();
 
    Serializer->EndBody();
    Serializer->EndEnvelope();
 
    Connector->EndMessage();             // Send the message to the web service
 
    // 读取响应
    Reader.CreateInstance(__uuidof(SoapReader30));
    Reader->Load(_variant_t((IUnknown*)Connector->OutputStream), "");
 
    printf("Answer: %s\n", (const char*)Reader->RpcResult->text); // Reader->RpcResult->Gettext()等效
}
 
int main(int argc, char* argv[])
{
    CoInitialize(NULL);
    char* EndPointURL = "http://192.168.0.100/WebService1/Service.asmx";
    char* Namespace = "http://tempuri.org/";
 
    vector<string> v1, v2;
 
    v2.push_back("JoeBlack");
    query(EndPointURL, Namespace, "Hello", v2);
 
    CoUninitialize();
    getchar();
 
    return 0;
}

  

3>通过vs2010发布服务, 添加webservices,文件名Service.asmx,不能通过wcf发布,否则上面的代码回报错。

Service.asmx文件源码

using System;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class Service : System.Web.Services.WebService
{
    public Service () {

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

    [WebMethod(Description = "Let‘s say \"Hi\"")]
    public string Hi()
    {
        return "Hello World, Happy New Year!";
    }

    [WebMethod(Description = "Hello JoeBlack")]
    public string Hello(string username)
    {
        return username + ", Happy New Year!";
    }

    [WebMethod(Description = "求和的方法")]
    public double addition(double i, double j)
    {
        return i + j;
    }

    [WebMethod(Description = "求差的方法")]
    public double subtract(double i, double j)
    {
        return i - j;
    }

    [WebMethod(Description = "求积的方法")]
    public double multiply(double i, double j)
    {
        return i * j;
    }

    [WebMethod(Description = "求商的方法")]
    public double division(double i, double j)
    {
        if (j != 0)
            return i / j;
        else
            return 0;
    }
}

  

时间: 2024-08-24 18:57:01

svc6 控制台程序利用SoapToolkit3.0调用WebService的相关文章

vc6控制台程序利用SoapToolkit3.0调用WebService

1. 首先要安装SoapToolkit3.0安装包并安装(我的安装目录为:D:\Program Files\MSSOAP\) 2. 新建vc控制台程序(空项目),项目名称:WinConsole6InvokeWebService,添加一个c++源文件(main.cpp),将SOAP安装目录下的lib文件D:\Program Files\MSSOAP\Lib\mssoap30.lib复制到项目文件夹下. 3.添加源代码: #include <stdio.h> #include <iostre

利用JavaScriptSOAPClient直接调用webService --完整的前后台配置与调用示例

JavaScriptSoapClient下载地址:https://archive.codeplex.com/?p=javascriptsoapclient JavaScriptSoapClient的Demo实例:  http://www.guru4.net/articoli/javascript-soap-client/demo/en.aspx 利用JavaScript SOAP Client直接调用webService --完整的前后台配置与调用示例 2013年01月04日 17:15:32

C/C++利用gsoap库调用WebService

C/C++调用WebService需要用到soap库,一般使用的有gsoap和axis cpp两种实现,这里使用gsoap来调用.gsoap可以在 linxu.windows.mac多种平台上使用. gsoap的主页地址是http://gsoap2.sourceforge.net/ 新建一个WebService: 1 //写一个简单的方法 2 [WebMethod(Description="返回字符串")] 3 public string HelloWorld(string str)

利用管道获取控制台程序的标准输出

1.该程序调用控制台程序hello.exe,通过管道获取到hello.exe的标准输出数据,并打印到当前程序的标准输出. #include <Windows.h> #include <iostream> #include <string> using namespace std; void invoke(string exe); int main(int argc, char* argv[]) { string exe = "hello.exe";

C#程序员学习Android开发系列之调用WebService

我在学习Android开发过程中遇到的第一个疑问就是Android客户端是怎么跟服务器数据库进行交互的呢?这个问题是我当初初次接触Android时所困扰我的一个很大的问题,直到几年前的一天,我突然想到WebService是否可以呢?让WebService充当服务器端的角色,完成与服务器数据库操作相关的事情,而Android客户端只要按照WebService方法参数的要求去调用就行了.在当时我对这个解决方案的实现还没模糊,我想这个问题也是初学Android的朋友肯定会想到的问题.那么现在就让我们动

C++程序中调用WebService的实现

前言 因为最近的项目中需要运用到在MFC程序中调用WebService里面集成好了的函数,所以特意花了一天的时间来研究WebService的构建以及如何在MFC的程序中添加Web引用,进而来实现在C++ MFC中调用那些WebService中写好的函数,中间也是遇到了一些不懂和不解的地方,好在通过度娘上的一些资料和自己的研究逐一的解决了,写这篇文章的主要目的是,第一:让自己记得更清楚,也方便以后不记得了可以及时回想起来.第二:让其他的一些和我碰到一样问题的朋友能更好的解决此问题.内容仅供参考,如

VC6.0建立控制台程序

作者:iamlaosong 因为需要,又写起了文本界面的程序,以便PDA通过telnet连上执行.如果是Linux服务器的话,这是很简单的事,可是用户服务器是windows server 2003,所以就需要安装telnet服务,开发一个控制台程序.telnet服务器软件使用开源软件KpyM Telnet/SSH Server,控制台程序就用VC6.0来做了.网上搜了一下,通过下面链接操作即可: 怎么用VC6.0建立控制台程序 建议不要建立一个空程序,而是建立一个"Hello,World!&qu

用Delphi7 调用.NET 2.0的WebService 所要注意的问题(Document格式和UTF8编码)

Delphi7 调用VS.NET 2005开发的基于.NET 2.0的WebService时发生了错误.查阅资料 http://www.community.borland.com/article/borcon/files/4132/paper/4132.html 发现原来Delphi7客户端虽然支持WebService的RPC|Encoded 和 Document|Literal编码,但 默认的是使用RPC.而.NET 2.0下的WebService却是默认采用Documnet|Literal编

利用ksoap调用webservice

博文参考: http://www.cnblogs.com/shenliang123/archive/2012/07/05/2578586.html http://blog.csdn.net/jimbo_lee/article/details/23612333 http://www.cnblogs.com/zhangchaoyang/articles/1955834.html 注意: 1.需要加网络权限 2.跟一般的联网操作一样需要在子线程中. 3.两个主要参数: webservice的命名空间和