• c++ 利用msxml2.dll请求WebService


    #pragma once
    #include 
    "stdafx.h"
    #include 
    "Atlbase.h"
    //#import "msxml.dll"
    #import "msxml2.dll"

    using namespace MSXML2;
    int main(int argc, char* argv[])
    {
        printf(
    "Test of XMLHTTP by masterz!\n");
        CoInitialize(NULL);
        
    try
        
    {
            IXMLHTTPRequestPtr xmlrequest;
    //定义http请求对象
            
    //xmlrequest.CreateInstance("Msxml2.XMLHTTP");
            xmlrequest.CreateInstance(__uuidof(XMLHTTP));//创建实列
            CComVariant vFalse(FALSE);
            CComVariant vNull(NULL);
            xmlrequest
    ->open("POST",bstr_t("http://localhost:1135/Service1.asmx/GetName"),vFalse,vNull,vNull);//打开WEBServeice方法GetName
            xmlrequest->setRequestHeader("Content-Type:","application/x-www-form-urlencoded");//设置Http头
            _bstr_t bsdata("name=xiaowy&password=kkkk");//use your login name 传入请求参数
            xmlrequest->send(_variant_t(bsdata));//发道数据
            BSTR bstrbody;
            xmlrequest
    ->get_responseText(&bstrbody);//得到返回数据
            _bstr_t bstrtbody(bstrbody);
            printf(
    "%s\n",(LPCTSTR)bstrtbody);
            
    //MessageBox(0,(LPCTSTR)bstrtbody,"",MB_OK);
            MSXML2::IXMLDOMDocument2Ptr m_xmldoc;
            m_xmldoc.CreateInstance(__uuidof(MSXML2::DOMDocument));
            m_xmldoc
    ->loadXML(bstrbody);
            
    /*MSXML2::IXMLDOMNodeListPtr nodesPtr;
            nodesPtr = m_xmldoc->selectNodes(_bstr_t("string"));
            LONG * length;
            HRESULT r =  nodesPtr->get_length(length);
    */

            
    //MSXML2::IXMLDOMNodePtr nodePtr =
            
    //BSTR * str;
            
    //HRESULT result = nodePtr->get_text(str);
            MSXML2::IXMLDOMNodePtr node = m_xmldoc->documentElement->firstChild;
            LPCTSTR str 
    = (LPCTSTR)node->nodeName;
            LPCTSTR str2
    =(LPCTSTR)m_xmldoc->documentElement->text;
            printf(
    "%s",str2);
            getchar();
        }

        
    catch (_com_error &e)
        
    {
            printf(
    "Description = '%s'\n", (char*) e.Description());
        }

        CoUninitialize();
        printf(
    "program end\n");
        
    return 0;
    }
  • 相关阅读:
    list浅析
    C#尝试读取或写入受保护的内存。这通常指示其他内存已损坏(catch不起作用)
    浅析C#线程同步事件-WaitHandle
    C#操作xml方法1
    C#简单的操作csv文件
    C#的int类型?,??,~的意思,string类型空值赋值
    将多个exc表格汇总于一个表格中
    C#禁止双击标题栏等操作
    c#泛型
    c#session
  • 原文地址:https://www.cnblogs.com/wubiyu/p/1248291.html
Copyright © 2020-2023  润新知