手机
当前位置:查字典教程网 >编程开发 >C语言 >C++通过msxml调用webservice示例分享
C++通过msxml调用webservice示例分享
摘要:其实没什么难度,只是要调发送的xml格式,建议使用SoapUI调好,再粘到项目中就是使用msxml因为是mfc的东西,要在项目中设置在共享D...

其实没什么难度,只是要调发送的xml格式,建议使用SoapUI调好,再粘到项目中

就是使用 msxml因为是mfc的东西,要在项目中设置在共享DLL中使用MFC

还有要在调用的服务后面加?wsdl解释成xml格式

代码

webservice

复制代码 代码如下:

using System;

using System.Data;

using System.Web;

using System.Collections;

using System.Web.Services;

using System.Web.Services.Protocols;

using System.ComponentModel;

namespace WebService

{

/// <summary>

/// Service1 的摘要说明

/// </summary>

[WebService(Namespace = "http://www.jb51.net/")]

[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]

[ToolboxItem(false)]

public class Service1 : System.Web.Services.WebService

{

[WebMethod]

public string HelloWorld()

{

return "Hello World";

}

[WebMethod]

public string SayHello(string name)

{

return "Hello "+name;

}

}

}

头文件

[code]

#pragma once

#include "stdafx.h"

#include "Atlbase.h"

//#import "msxml.dll"

#import "msxml4.dll"

using namespace MSXML2;

#include <string>

#include <iostream>

using namespace std;

调用代码

复制代码 代码如下:

#include "Main.h"

int main(int argc, char* argv[])

{

printf("Test of XMLHTTP by masterz!n");

CoInitialize(NULL);

try

{

IXMLHTTPRequestPtr xmlrequest;//定义http请求对象

xmlrequest.CreateInstance(__uuidof(XMLHTTP));//创建实列

CComVariant vFalse(FALSE);

CComVariant vNull(NULL);

xmlrequest->open("POST",bstr_t("http://192.168.71.172/Service1.asmx?wsdl"),vFalse,vNull,vNull);//打开WEBServeice方法:加?wsdl

xmlrequest->setRequestHeader(_bstr_t(_T("Content-Type")), _bstr_t(_T("text/xml")));

string sb;

sb.append("<?xml version='1.0' encoding='utf-8'?>");

sb.append("<soapenv:Envelope xmlns:soapenv='http://www.jb51.net/soap/envelope/' xmlns:tem='http://www.jb51.net/'>");

sb.append("<soapenv:Header/>");

sb.append("<soapenv:Body>");

//sb.append("<tem:HelloWorld/>");//调用HelloWorld函数

sb.append("<tem:SayHello>");

sb.append("<tem:name>colin</tem:name>");//调用SayHello函数,参数名是name,值为colin

sb.append("</tem:SayHello>");

sb.append("</soapenv:Body>");

sb.append("</soapenv:Envelope>");

xmlrequest->send(_variant_t(sb.c_str()));//发道数据

BSTR bstrbody;

xmlrequest->get_responseText(&bstrbody);//得到返回数据

_bstr_t bstrtbody(bstrbody);

printf("%sn",(LPCTSTR)bstrtbody);

MSXML2::IXMLDOMDocument2Ptr m_xmldoc;

m_xmldoc.CreateInstance(__uuidof(MSXML2::DOMDocument));

m_xmldoc->loadXML(bstrbody);

MSXML2::IXMLDOMNodePtr node = m_xmldoc->documentElement->firstChild;

LPCTSTR str = (LPCTSTR)node->nodeName;

string str2=(string)m_xmldoc->documentElement->text;

cout<<str2<<endl;

}

catch (_com_error &e)

{

printf("Description = '%s'n", (char*) e.Description());

}

CoUninitialize();

printf("program endn");

return 0;

}

【C++通过msxml调用webservice示例分享】相关文章:

头文件不宜定义变量的原因全面解析

c语言中static的用法详细示例分析

如何通过函数指针调用函数(实现代码)

浅析c++中new和delete的用法

基于C++内存分配、函数调用与返回值的深入分析

基于C++输出指针自增(++)运算的示例分析

浅析C语言位域和位段

用C语言实现单链表的各种操作(一)

解析一个有关sizeof用法的题目--sizeof(i++)

通过c++11改进我们的模式之改进命令模式

精品推荐
分类导航