C++ POST方式访问网页

bool PostContent(CString strUrl, const CString &strPara, CString &strContent, CString &strDescript)//第一个参数为URL头
{                         //第二个参数为要post表单的内容
    try{                       //第三个参数用于保存页面返回的信息
                         //第四个参数用于记录日志
        strDescript = "提交成功完成!";
        bool bRet = false;
        CString strServer, strObject, strHeader, strRet;
        unsigned short nPort;
        DWORD dwServiceType;
        if(!AfxParseURL www.90168.org (strUrl, dwServiceType, strServer, strObject, nPort))
        {
            strDescript = strUrl + "不是有效有网络地址!";
            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 = "找不到网络地址" + strUrl;
            return false;
        }

pFile -> AddRequestHeaders("Content-Type: application/x-www-form-urlencoded");
        pFile -> AddRequestHeaders("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[256];
            memset(buffer, 0, 256);
            int nReadCount = 0;
            while((nReadCount = pFile->Read(buffer, 2048)) > 0)
            {
                strContent += buffer;
                memset(buffer, 0, 256);
            }
            bRet = true;
        }
        else
        {
            strDescript = "网站服务器错误" + strUrl;
            bRet = false;
        }
        ////////////////////////////////////////
        pFile->Close();
        sess.Close();
        return bRet;
    }
    catch(...)
    {
        int nCode = GetLastError();
        strDescript.Format("向服务器post失败!错误号:%d", nCode);
        return false;
    }
}

时间: 2024-10-13 10:35:07

C++ POST方式访问网页的相关文章

Get与Post方式访问网页

区别:1.get长度有限,而post长度可以更长 2.get的请求包含参数将会被cache 但是post 不会 3.get的url能被存为标签但是post不能 4.get只能进行url编码,post则可以多种编码 5.get只接受ASCII字符 但是post没有限制 6.get后退无害,但是post会出发再次请求 7.get比post的安全性差,因为get参数直接暴露在url中 高级区别: 1.get产生一个TCP数据包:post产生两个TCP数据包 2.在一次请求中,get一次性完成,post

Android网络:HTTP之利用HttpURLConnection访问网页、获取网络图片实例 (附源码)

http://blog.csdn.net/yanzi1225627/article/details/22222735 如前文所示的TCP局域网传送东西,除了对传输层的TCP/UDP支持良好外,Android对HTTP(超文本传输协议)也提供了很好的支持,这里包括两种接口: 1.标准Java接口(java.net) ----HttpURLConnection,可以实现简单的基于URL请求.响应功能: 2.Apache接口(org.appache.http)----HttpClient,使用起来更方

浅谈 php 采用curl 函数库获取网页 cookie 和 带着cookie去访问 网页的方法!!!!

由于近段时间帮朋友开发一个能够查询正方教务系统的微信公众平台号.有所收获.这里总结下个人经验. 开讲前,先吐槽一下新浪云服务器,一个程序里的   同一个函数  在PC测试可以正常运行,在它那里就会挂的现象. 老样子,我将在代码里注释清楚.使用下面的函数,将会获得两种形式的 cookie,一种保存在文件中,一种直接以变量的形式返回, 经验提示: 有时候,在不同的代码运行环境中,带着文件cookie 去访问会成功,而变量却失败,有时候却想法.不过, 目前,这两种方法总有一种会成功. 1 functi

通过jQuery或ScriptManager以Ajax方式访问服务

1.客户端和服务端 服务端对外提供服务时,可以通过handler或者webservice.handler比较轻便,但是难以对外公开,只有程序员自己知道它到底做了些什么工作.webservice可以将服务对外公开,调用也方便,更加专业些.如果不是要公开的接口,handler完全可以胜任了.下面是将webservice发布的效果. 客户端在调用服务端的服务时,最简单的莫过于使用jQuery了.当然微软也提供了ScriptMananger来访问WebService.他们之间的关系可以用下图说明. 2.

浏览器无法访问网页解决

原创作品,出自 "深蓝的blog" 博客,欢迎转载,转载时请务必注明出处,否则有权追究版权法律责任. 深蓝的blog:http://blog.csdn.net/huangyanlong/article/details/46293107 今天在浏览网页时,发现电脑中只有360浏览器才能浏览网页,使用火狐浏览器时报错: 并且IE浏览器也无法访问网页了,于是上网找了找解决方式. (1).火狐浏览器无法打开网页解决 (2).IE浏览器无法打开网页解决 小知识,简而记之. ***********

网络爬虫初步:从访问网页到数据解析

前言: 网络爬虫这个东西看上去还是很神奇的.不过,如果你细想,或是有所研究就知道,其实爬虫并不那么高深.高深的是在我们的数据量很大的时候,就是当我们网络"图"的回环越来越多的时候,应该怎么去解决它. 本篇文章在这里只是起一个抛砖引玉的作用.本文主要是讲解了如何使用Java/Python访问网页并获得网页代码.Python模仿浏览器进行访问网页和使用Python进行数据解析.希望我们以本文开始,一步一步解开网络蜘蛛神秘的一面. 参考: 1.<自己动手写网络爬虫> 2.用pyt

linux下c/c++方式访问curl的帮助手册

自:http://blog.chinaunix.net/u1/47395/showart_1768832.html 有个业务需求需要通过curl 代理的方式来访问外网 百度了一把,测试可以正常使用.记录下来方便后续查找 example:   1. http://curl.haxx.se/libcurl/c/example.html  2. http://www.libcurl.org/book:  1. http://www.linuxdevcenter.com/pub/a/linux/2005

salesforce 零基础学习(三十三)通过REST方式访问外部数据以及JAVA通过rest方式访问salesforce

本篇参考Trail教程: https://developer.salesforce.com/trailhead/force_com_dev_intermediate/apex_integration_services/apex_integration_rest_callouts 有的时候我们需要在salesforce中引入外部的方法或者数据,这样就需要访问外部的Services,目前常用的访问方式有两种: 1.SOAP方式:Web Service通过XML方式调用SOAP Web服务器; 2.R

PowerShell 访问网页

访问百度: $ie = Invoke-WebRequest http://wenku.baidu.com/ $ie.Content POST,需要先构建 POST 数据. $body = @{ "doc_id_code"="1eafaeea5ef7ba0d4a733b44" "query_word"="" } $ie = Invoke-WebRequest http://wenku.baidu.com/rec/getstrre