VC++6.0调用Web Services(可以是c#,java,vc++.net等提供的服务都可以)!

转载 2011年03月28日 19:43:00

本文主要讲述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的方法,其中web services可以是c#,java,vc++.net等提供的服务都可以调用!主要的大致过程如下...
  • zhoubl668
  • zhoubl668
  • 2008年12月27日 22:35
  • 2845

SVN hooks+Jira WebService实现控制日志信息提交总结

一、SVN hooks相关知识    SVN hooks即SVN钩子脚本是利用后台的管理命令和所需要使用的hooks提供的参数。来进行一些组合,满足的需求! 钩子脚本在每个repos的hooks目录下...
  • u012046931
  • u012046931
  • 2013年12月19日 10:01
  • 1803

C#调用Web Service简单实例

C#调用Web Service简单实例 本文
  • u012025054
  • u012025054
  • 2014年08月31日 21:18
  • 2789

请问我是学vc++6.0好,还是.net 好?有什么不同?谢谢

问:请问我是学vc++6.0好,还是.net 好?有什么不同?谢谢 还有sql server2000还是sql server 2005呢?答:要结合这两种语言/平台的特点和自己的专业兴趣,以及技术的发...
  • sorichwalk
  • sorichwalk
  • 2006年07月31日 13:40
  • 1400

Java Restful Web Services (一)

REST(Representational State Transfer,表述性状态转移),是Roy Thomas Fielding在他2000年的博士论文《Architectural Style...
  • kangkanglou
  • kangkanglou
  • 2015年02月14日 16:04
  • 2460

Java 调用C#Webservice 封装

import java.net.URL;import javax.xml.namespace.QName;import org.apache.axis.client.Call;import org.a...
  • luckytjx
  • luckytjx
  • 2014年09月30日 17:25
  • 4206

VS调用Java的WebService

一、VS调用Java的Webservice时第一步需先添加Web引用,新建一个Asp.net项目,或在原有的项目“WebReferenceces”单击右键选择添加Web引用,如下图   二、在...
  • li4815347
  • li4815347
  • 2015年08月12日 14:52
  • 1371

VC++6.0调用Web Services(转)

第一部分 在vc6里调用WebService   突然要在c++里调用webservice,一时还不知道从何下手,又想起了.net的好了,直接用wsdl命令生成一个代理类就搞定了,于是又开始了在...
  • dragoo1
  • dragoo1
  • 2016年02月28日 01:20
  • 2717

java调用python的webservice

这次出差,我接触最多的是spss,由于项目基于j2ee开发,而java又不能直接取得spss统计结果,好在spss对python的支持还行,最终成功实现了这个模块。感谢前辈们做出的贡献,没有你们,我就...
  • lifaming15
  • lifaming15
  • 2007年12月11日 17:27
  • 3373

【SQL】安装SQl 2008为SQL Server代理服务提供的凭据无效的解决办法

sql server 2008 代理服务提供的凭据无效 sql server 2008 代理服务提供的凭据无效    在Windows Server 2008安装SQL Server 20...
  • catshitone
  • catshitone
  • 2014年10月14日 16:30
  • 1167
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:VC++6.0调用Web Services(可以是c#,java,vc++.net等提供的服务都可以)!
举报原因:
原因补充:

(最多只允许输入30个字)