VC++6.0调用Web Services(可以是c#,java,vc++.net等提供的服务都可以)!
来源:互联网 发布:数据建模到底是什么 编辑:程序博客网 时间:2024/05/18 09:13
本文主要讲述VC++6.0调用Web Services的方法,其中web services可以是c#,java,vc++.net等提供的服务都可以调用!主要的大致过程如下:
需要装Soap Toolkit3.0,电脑上一般自带Soap Toolkit1.0,以下代码在VC++6.0中测试成功。
在stdafx.h加上
//////////////////////////////////////////////////////////WEB_SERVICE
#include <stdio.h>
#import "msxml4.dll"
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;
//////////////////////////////////////////////////////////////////////END
SoapTestDlg.h里面
/////////////
CString BeginSoap(CString,CString,CString);
ISoapConnectorPtr SoapConnector;
ISoapSerializerPtr Serializer;
ISoapReaderPtr Reader;
///////////////////////////////////////////
SoapTestDlg.cpp里面
///////////
void CSoapTestDlg::OnButton1()
{
CString str,strWord;
GetDlgItem(IDC_EDIT1)->GetWindowText(strWord);
str=BeginSoap("EnglishTOChinese",strWord,"http://www.webservicex.net/translateservice.asmx");
AfxMessageBox(str);
}
CString CSoapTestDlg::BeginSoap(CString UserName,CString Password,CString WebUrl)
{
HRESULT hr;
try
{
//创建SoapConnector类的对象
SoapConnector.CreateInstance(__uuidof(HttpConnector30));
//指定Web服务的地址
SoapConnector->Property ["EndPointURL"] =(LPSTR)(LPCTSTR)WebUrl;
//与Web服务连接
hr=SoapConnector->Connect();
if(FAILED(hr)) return "";
//指定Web服务完成的操作
SoapConnector->Property ["SoapAction"] = _T("http://www.webservicex.net/Translate");
//准备发送消息给Web服务
SoapConnector->BeginMessage();
// 创建SoapSerializer对象
Serializer.CreateInstance(__uuidof(SoapSerializer30));
// 将serializer连接到connector的输入字符串
Serializer->Init(_variant_t((IUnknown*)SoapConnector->InputStream));
// 创建SOAP消息
Serializer->StartEnvelope("soap","","");
Serializer->StartBody("");
Serializer->StartElement("Translate","http://www.webservicex.net","","soap");
Serializer->StartElement("LanguageMode","","","soap");
Serializer->WriteString((_bstr_t)(LPCTSTR)UserName);
Serializer->EndElement();
Serializer->StartElement("Text","","","soap");
Serializer->WriteString((_bstr_t)(LPCTSTR)Password);
Serializer->EndElement();
Serializer->EndElement();
Serializer->EndBody();
Serializer->EndEnvelope();
//消息真正地发给Web服务
hr=SoapConnector->EndMessage();
if(FAILED(hr)) return "";
// 读取响应
Reader.CreateInstance(__uuidof(SoapReader30));
// 将reader联接到connector的输出字符串
Reader->Load(_variant_t((IUnknown*)SoapConnector->OutputStream), _T(""));
return CString((const char *)Reader->RpcResult->text);
}
catch (_com_error e)
{
return (CString)(char*)e.Description();
}
}
//////////////////////////////////////////////////////////////////////OVER///////////////////////////
当然用Soap Toolkit1.0调用也可以,大致代码跟上面的一样,需要改动的有:
1.包含库文件代码改为下面
#import "msxml4.dll"
using namespace MSXML2;
#import "C:/Program Files/Common Files/MSSoap/Binaries/MSSOAP1.dll" /
exclude("IStream", "ISequentialStream", "_LARGE_INTEGER", /
"_ULARGE_INTEGER", "tagSTATSTG", "_FILETIME")
using namespace MSSOAPLib;
2. 函数代码上包含30数字的全将30去掉,如
SoapConnector.CreateInstance(__uuidof(HttpConnector));
Serializer.CreateInstance(__uuidof(SoapSerializer));
Reader.CreateInstance(__uuidof(SoapReader));
3.将
Serializer->StartElement("Text","","","soap");
Serializer->WriteString((_bstr_t)(LPCTSTR)Password);
Serializer->EndElement();
Serializer->EndElement();
Serializer->EndBody();
Serializer->EndEnvelope();
改为:(第一个单词小写)
Serializer->writeString("laghari78");
Serializer->endElement();
Serializer->endElement();
Serializer->endBody();
Serializer->endEnvelope();
/////////////////////////////////////////OK/////////////////////////////////////////////////
- VC++6.0调用Web Services(可以是c#,java,vc++.net等提供的服务都可以)!
- VC++6.0调用Web Services(可以是c#,java,vc++.net等提供的服务都可以)!
- vc++ 调用web services
- VC++6.0调用Web Services(转)
- 在VC++6.0中调用Web Services的方法
- vc 6.0 web services
- vc 6.0 web services
- 提供各种计算机的毕业设计VB,DELPHI,VC++,C#,VB.NET,ASP.NET等
- java调用.net的web services
- VC++调用天气预报Web services方法
- VC++获取U盘盘符(各种类型的驱动器都可以)
- Java与.NET 的Web Services相互调用(二)
- C++/CLI/VC.NET 实现OpenFileDialog的定制,使他可以选择文件夹
- VC动态库可以嵌套调用
- VC 没有可以用于当前位置源代码(.net同样适用)
- LeanCloud(原来的AVOS )可以提供消息推送、地理数据等服务。还可以实现更复杂的后端逻辑。
- java基础:java switch(表达式)中表达式的类型都可以是哪些类型?
- Java与.NET 的Web Services相互调用
- 安装oracle修改linux版本
- 子数列 acm at BUPT 1004
- 成功把天嵌的测试程序移植到MDK上面
- 优秀程序员的十个习惯
- 读The Java™ Language Specification(一)——谈异常设计
- VC++6.0调用Web Services(可以是c#,java,vc++.net等提供的服务都可以)!
- UBUNTU 结束进程办法
- 解决mysql Apply security settings安装不成功
- 设置linux环境变量LANG
- UNIX 网络编程 卷一:套接字联网API 读书笔记(3) 第三章 套接字编程简介
- linux socket 编程 send 发生 Resource temporarily unavailable 错误的原因
- 嵌入式面试面试题
- Linux和Solaris查看硬件情况的方法
- 与垃圾短信斗争