博客日历
2024年11月 | ||||||
一 | 二 | 三 | 四 | 五 | 六 | 七 |
28 | 29 | 30 | 31 | 1 | 2 | 3 |
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 1 |
存档
2024年03月 04月 05月 2021年
01月 02月 11月 12月 2020年
02月 03月 04月 05月 06月 07月
09月 2018年
09月 2017年
01月 02月 07月 2016年
01月 04月 07月 08月 11月 12月
2015年
01月 02月 03月 05月 09月 10月
11月 2014年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2013年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2012年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2011年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2010年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2009年
03月 04月 05月 06月 07月 08月
09月 10月 11月 12月
用Win7做虚拟无线AP实现网络共享
rem 启动虚拟无线AP.cmd
netsh wlan set hostednetwork mode=allow ssid=virtual-ap key=12345678
netsh wlan start hostednetwork
rem 停止虚拟无线AP.cmd
netsh wlan stop hostednetwork
netsh wlan set hostednetwork mode=disallow
分类:杂谈随感 查看次数:8685 发布时间:2012/5/31 23:07:51
用gSOAP访问WebService,QVOD搜索神器命令行版
1.gSOAP简介
gSOAP是一个跨平台的,用于开发Web Service服务端和客户端的工具包。
2.Web Service客户端示例
2.1 为便于测试,先用ASP.NET创建一个Web Service服务端。
主要代码如下:
[WebService(Namespace = "namespace$http://www.qingfengju.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
public class TestService : System.Web.Services.WebService
{
[WebMethod]
public string HelloWorld()
{
return "Hello World";
}
[WebMethod]
public string ToHex(int num)
{
return "0x" + num.ToString("X8");
}
}
2.2 用gSOAP提供的工具生成wsdl对应的C++代码
# -o output to file
# -v verbose output
wsdl2h -v -o TestServiceSoap.h http://localhost/TestService.asmx?WSDL
# -L don't generate soapClientLib/soapServerLib
# -C generate client-side code only
# -I use path(s) for #import
# -x don't generate sample XML message files
soapcpp2 -L -C -ID:\Tools\gSOAP_2.8.8\gsoap\import -x TestServiceSoap.h
注意:
我的gsoap安装在D:\Tools\gSOAP_2.8.8目录,wsdl2h.exe和soapcpp2.exe在
D:\Tools\gSOAP_2.8.8\gsoap\bin\win32目录中。
为SOAP1.2生成的文件如下两个文件可以删除:
soapTestServiceSoap12Proxy.h
TestServiceSoap12.nsmap
2.3 测试代码TestClient.cpp
#include "TestServiceSoap.nsmap"
#include "soapTestServiceSoapProxy.h"
#include <iostream>
using namespace std;
int main()
{
TestServiceSoap test;
//调用HelloWorld()
_ns1__HelloWorld hello;
_ns1__HelloWorldResponse hello_res;
int ret=test.__ns2__HelloWorld(&hello,&hello_res);
if(0!=ret)
{
cerr<<"error:__ns2__HelloWorld()="<<ret<<endl;
return -1;
}
cout<<*hello_res.HelloWorldResult<<endl;
//调用ToHex(num)
_ns1__ToHex tohex;
tohex.num=65535;
_ns1__ToHexResponse tohex_res;
ret=test.__ns2__ToHex(&tohex,&tohex_res);
if(0!=ret)
{
cerr<<"error:__ns2__ToHex()="<<ret<<endl;
return -1;
}
cout<<*tohex_res.ToHexResult<<endl;
return 0;
}
# /EHs 启用 C++ EH (没有 SEH 异常)
# /EHc 外部“C”默认为 nothrow
# /Fe<file> 命名可执行文件
cl /EHsc /FeTestClient.exe TestClient.cpp soapC.cpp soapClient.cpp stdsoap2.cpp
3.小技巧
3.1 使用gSOAP访问UTF-8编码的WebService
a.使用自己的typemap.dat,即:用此wsdl2h -tmytypemap.dat生成wsdl对应的C++代码
b.在mytypemap.dat中增加:xsd__string = | std::wstring | wchar_t*
c. XXXX.soap->mode=SOAP_C_UTFSTRING;
d.如果要在控制台输出Unicode字符串,需要执行:
wcout.imbue(std::locale("chs"));
wcout<<L"wstring"<<endl;
注:这里的XXXX是自动生成的Proxy类对象。
3.2 为gSOAP设置代理服务器
XXXX.soap->proxy_host="192.168.2.72";
XXXX.soap->proxy_http_version="1.1";
XXXX.soap->proxy_port=8080;
3.3 为gSOAP设置超时时间
XXXX.soap->connect_timeout=20;
XXXX.soap->send_timeout=20;
XXXX.soap->recv_timeout=20;
4.小工具:QVOD搜索神器命令行版
网上流传的[QVOD搜索神器],这里我做了一个命令行版,也使用的是gSOAP。
WebService接口地址:http://www.cnemoney.com/searchService.dll/soap/IqvodsearchService
使用方法:QvodSearch.exe <关键字>
例如:QvodSearch.exe 许巍
得到如下结果:
qvod://21375080|580F55C1166C6F4E238A231D07E3568C7537207A|许巍_爱_01.rmvb|
qvod://17281102|353CCAD9913C779F9D5AFF13E7AD523568E2331F|许巍_故事_02.rmvb|
qvod://23589892|04A4E5573F7017C2AFDFD97F56A970858BB57407|许巍_礼物_03.rmvb|
qvod://32091361|8D1569E40D975FAB300EBE5FE5B0236AA3C11961|许巍_蓝莲花(2005北京演唱会)_live_04.rmvb|
qvod://25185336|FC23115242494CD039ABE3E0FE26000C46F647B1|许巍_旅行现场版_05.rmvb|
qvod://15547720|EDAD2D9926D0E7A9C109F342B64C434AEDCD13FE|许巍_曾经的你_LIVE_06.rmvb|
qvod://23783117|1281720532276065A53F221B5848C67E59391113|许巍_故乡_绝版青春演唱会现场版_07.rmvb|
qvod://21375080|580F55C1166C6F4E238A231D07E3568C7537207A|许巍_爱_01.rmvb|
qvod://17281102|353CCAD9913C779F9D5AFF13E7AD523568E2331F|许巍_故事_02.rmvb|
qvod://23589892|04A4E5573F7017C2AFDFD97F56A970858BB57407|许巍_礼物_03.rmvb|
qvod://32091361|8D1569E40D975FAB300EBE5FE5B0236AA3C11961|许巍_蓝莲花(2005北京演唱会)_live_04.rmvb|
qvod://25185336|FC23115242494CD039ABE3E0FE26000C46F647B1|许巍_旅行现场版_05.rmvb|
qvod://15547720|EDAD2D9926D0E7A9C109F342B64C434AEDCD13FE|许巍_曾经的你_LIVE_06.rmvb|
qvod://23783117|1281720532276065A53F221B5848C67E59391113|许巍_故乡_绝版青春演唱会现场版_07.rmvb|
qvod://444996021|4F9C0A179ABB5767B5A62C3402DDD98C06C18511|许巍2005留声十年绝版青春北京演唱会_DVD.rmvb|
WebService接口地址:http://www.cnemoney.com/searchService.dll/soap/IqvodsearchService
使用方法:QvodSearch.exe <关键字>
例如:QvodSearch.exe 许巍
得到如下结果:
qvod://21375080|580F55C1166C6F4E238A231D07E3568C7537207A|许巍_爱_01.rmvb|
qvod://17281102|353CCAD9913C779F9D5AFF13E7AD523568E2331F|许巍_故事_02.rmvb|
qvod://23589892|04A4E5573F7017C2AFDFD97F56A970858BB57407|许巍_礼物_03.rmvb|
qvod://32091361|8D1569E40D975FAB300EBE5FE5B0236AA3C11961|许巍_蓝莲花(2005北京演唱会)_live_04.rmvb|
qvod://25185336|FC23115242494CD039ABE3E0FE26000C46F647B1|许巍_旅行现场版_05.rmvb|
qvod://15547720|EDAD2D9926D0E7A9C109F342B64C434AEDCD13FE|许巍_曾经的你_LIVE_06.rmvb|
qvod://23783117|1281720532276065A53F221B5848C67E59391113|许巍_故乡_绝版青春演唱会现场版_07.rmvb|
qvod://21375080|580F55C1166C6F4E238A231D07E3568C7537207A|许巍_爱_01.rmvb|
qvod://17281102|353CCAD9913C779F9D5AFF13E7AD523568E2331F|许巍_故事_02.rmvb|
qvod://23589892|04A4E5573F7017C2AFDFD97F56A970858BB57407|许巍_礼物_03.rmvb|
qvod://32091361|8D1569E40D975FAB300EBE5FE5B0236AA3C11961|许巍_蓝莲花(2005北京演唱会)_live_04.rmvb|
qvod://25185336|FC23115242494CD039ABE3E0FE26000C46F647B1|许巍_旅行现场版_05.rmvb|
qvod://15547720|EDAD2D9926D0E7A9C109F342B64C434AEDCD13FE|许巍_曾经的你_LIVE_06.rmvb|
qvod://23783117|1281720532276065A53F221B5848C67E59391113|许巍_故乡_绝版青春演唱会现场版_07.rmvb|
qvod://444996021|4F9C0A179ABB5767B5A62C3402DDD98C06C18511|许巍2005留声十年绝版青春北京演唱会_DVD.rmvb|
搜索结果:共 15 条
5.使用VBScript访问WebService
如果安装了Microsoft SOAP Toolkit Version 3,可以用VBScript访问WebService,代码如下:
set soapclient = CreateObject("MSSOAP.SoapClient30")
call soapclient.mssoapinit("http://localhost/TestService.asmx?WSDL")
Wscript.Echo soapclient.HelloWorld()
Wscript.Echo soapclient.ToHex(255)
源码:点击下载本文相关源码
分类:Win32/C++ 查看次数:8028 发布时间:2012/5/29 23:41:19