通过HTTP协议利用VC++ POST通信开发

2023-05-16

转载地址:https://blog.csdn.net/lhsxsh/article/details/4200486


void CMFCForm1Dlg::OnBnClickedOk()
{
    // TODO: 在此添加控件通知处理程序代码
    //CDialogEx::OnOK();
    CString strDescript = _T("");
    CString strContent = _T("");
    CString strPara = _T("<?xml version=\"1.0\" encoding=\"UTF-8\"?><mmsxml><mmsheader><Title>ob5YbWxUeHShvw==</Title></mmsheader></mmsxml>");
    bool bok = PostContent(_T("http://www.baidu.com"), strPara, strContent, strDescript);
    if (!bok)
    {
        return;
    }
}

bool CMFCForm1Dlg::PostContent(CString strUrl, const CString &strPara, CString &strContent, CString &strDescript)
{   // CString strHttpName="http://oa.walkwatch.com"; 
    // 需要提交数据的页面   http://oa.walkwatch.com  http://www.baidu.com   http://127.0.0.1:8080
    // strPara="http://127.0.0.1:8080";
    try {
        strDescript = "提交成功完成!";
        bool bRet = false;
        CString strServer, strObject, strHeader, strRet;
        unsigned short nPort;
        DWORD dwServiceType;
        if (!AfxParseURL(strUrl, dwServiceType, strServer, strObject, nPort))
        {
            strDescript.Format(_T("%s 不是有效有网络地址!"), strUrl.GetBuffer(0));
            return false;
        }
        CInternetSession sess;//Create session

        CHttpFile* pFile;
        //
        CHttpConnection *pServer = sess.GetHttpConnection(strServer, nPort);
        if (pServer == NULL)
        {
            strDescript = "对不起,连接服务器失败!";
            return false;
        }
        pFile = pServer->OpenRequest(CHttpConnection::HTTP_VERB_POST, strObject, NULL, 1, NULL, NULL, INTERNET_FLAG_EXISTING_CONNECT);
        if (pFile == NULL)
        {
            strDescript = _T("找不到网络地址") + strUrl;
            return false;
        }

        //        pFile -> AddRequestHeaders("Content-Type: text/xml; charset=utf-8");
        pFile->AddRequestHeaders(_T("Content-Type: application/x-www-form-urlencoded"));
        pFile->AddRequestHeaders(_T("Accept: */*"));
        pFile->SendRequest(NULL, 0, (LPTSTR)(LPCTSTR)strPara, strPara.GetLength());

        CString strSentence;
        DWORD dwStatus;
        DWORD dwBuffLen = sizeof(dwStatus);
        BOOL bSuccess = pFile->QueryInfo(
            HTTP_QUERY_STATUS_CODE | HTTP_QUERY_FLAG_NUMBER,
            &dwStatus, &dwBuffLen);

        if (bSuccess && dwStatus >= 200 && dwStatus < 300)
        {
            char buffer[2049];
            memset(buffer, 0, 2049);
            int nReadCount = 0;
            while ((nReadCount = pFile->Read(buffer, 2048)) > 0)
            {
                strContent += buffer;
                memset(buffer, 0, 2049);
            }
            bRet = true;
        }
        else
        {
            strDescript = _T("网站服务器错误") + strUrl;
            bRet = false;
        }

        pFile->Close();
        sess.Close();
        return bRet;
    }
    catch (...)
    {
        int nCode = GetLastError();
        strDescript.Format(_T("向服务器post失败!错误号:%d"), nCode);
        return false;
    }
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过HTTP协议利用VC++ POST通信开发 的相关文章

随机推荐

  • NDCG:推荐系统/搜索评价指标

    本文转载自 胖喵 博主 xff0c 详细请看https www cnblogs com by dream p 9403984 html 1 CG xff1a 累计增益 CG xff0c cumulative gain xff0c 只考虑到了
  • 特征共线性问题

    多重共线性是使用线性回归算法时经常要面对的一个问题 在其他算法中 xff0c 例如决策树或者朴素贝叶斯 xff0c 前者的建模过程时逐渐递进 xff0c 每次都只有一个变量参与 xff0c 这种机制含有抗多重共线性干扰的功能 xff1b 后
  • 常见回归和分类损失函数比较

    文章转自知乎作者wdmad xff0c 更多内容建议阅读原文 xff1a https zhuanlan zhihu com p 36431289 本博文属于阅读笔记 xff0c 融合了个人观点 1 损失函数 损失函数的一般表示为 L y f
  • 获取keras中间层输出、模型保存与加载

    1 获取keras中间层输出 model summary and plot import keras from keras models import Model from keras utils import plot model Doc
  • HashMap底层实现和原理

    本文是在阅读知乎老刘作品后的整理 内容基于JDK1 7进行分析 xff0c 1 8做的改动文章末尾进行讲解 1 基本要义 1 1 概述 Hashmap在Map派生中的位置 HashMap基于Map接口实现 xff0c 元素以键值对的方式存储
  • 大疆激光雷达Livox Avia开箱及测试

    大疆激光雷达Livox Avia 箱子 从左至右为 xff1a 大疆激光雷达Livox Avia xff0c 电源转接插座 xff0c 内六角形L型扳手 xff0c 镜头清洁布 xff0c 螺钉包 xff0c 说明书 xff0c 1 5米航
  • Go协程与协程池

    1 Golang协程 golang和其它语言最大区别莫过于goroutine xff0c 也就是go的协程 xff0c example如下 xff1a package main import 34 fmt 34 import 34 time
  • Go协程池设计思路(Task-Job-Worker)

    1 铺垫 xff1a Go 的接收器Receiver 在go语言中 xff0c 没有类的概念 xff0c 但是可以给类型 xff08 结构体 xff0c 自定义类型 xff09 定义方法 所谓方法就是定义了接受者的函数 接受者定义在func
  • 系统间通信1:阻塞与非阻塞式通信A

    版权声明 xff1a 本文引用https yinwj blog csdn net article details 48274255 从这篇博文开始 xff0c 我们将进入一个新文章系列 这个文章系列专门整理总结了目前系统间通信的主要原理 手
  • 系统间通信1:阻塞与非阻塞式通信B

    版权声明 xff1a 本文引用https yinwj blog csdn net article details 48274255 接上篇 xff1a 系统间通信1 xff1a 阻塞与非阻塞式通信A 4 3 NIO通信框架 目前流行的NIO
  • 系统间通信2:通信管理与远程方法调用RMI

    本文引用 https yinwj blog csdn net article details 49120813 RMI Remote Method Invocation xff0c 远程方法调用 RPC Remote Procedure C
  • 系统间通信3:RPC的基本概念

    本文引用 https yinwj blog csdn net article details 49453303 1 概述 经过了详细的信息格式 网络IO模型的讲解 xff0c 并且通过JAVA RMI的讲解进行了预热 从这篇文章开始我们将进
  • 系统间通信4:基本IO通信模型

    本文引用 https blog csdn net yinwenjie article details 48472237 目前常用的IO通信模型包括四种 xff1a 阻塞式同步IO 非阻塞式同步IO 多路复用IO和真正的异步IO 所有IO模式
  • 深入理解Golang中的Context包

    context Context是Go语言中独特的设计 xff0c 在其他编程语言中我们很少见到类似的概念 context Context深度支持Golang的高并发 1 Goroutine和Channel 在理解context包之前 xff
  • ubuntu —— 命令行访问网页

    span class hljs variable style margin 0px padding 0px span sudo apt get install w3m span class hljs variable style margi
  • VINS-Mono 加rgbd

    通过对比VINS Mono与其RGBD版本 xff0c 分析其改动思路 一 feature tracker feature tracker node cpp 头文件加入了ros的多传感器时间戳 include lt message filt
  • MFC使用HttpGet和HttpPost方法与服务器通信

    处理过程封装到CHttpClient类中 同时支持http和https HttpClient h cpp view plain copy HttpClient h ifndef HTTPCLIENT H define HTTPCLIENT
  • 【Micropython】肝货~使用USB_VCP通过USB串口与树莓派或PC端通信

    为什么要使用USB VCP xff1f Micropython有很多串口 xff0c 例如PYboard xff0c 有5个串口可以使用 xff0c 但是 xff0c 平时我们在做一些项目的时候 xff0c 需要使用的引脚较多 xff0c
  • npm 401 BASIC realm=“Sonatype Nexus Repository Manager“

    今天在做vue项目 切换私服nexus npm login时 遇到了下面的问题error Unable to authenticate need BASIC realm 61 34 Sonatype Nexus Repository Man
  • 通过HTTP协议利用VC++ POST通信开发

    转载地址 xff1a https blog csdn net lhsxsh article details 4200486 void CMFCForm1Dlg OnBnClickedOk TODO 在此添加控件通知处理程序代码 CDialo