BOOL PostSubmit(CString strUrl,const CString&strPara, CString&strContent)
{
BOOL bRet=FALSE;

CString strInfo;

try
{
CString strServer, strObject, strHeader, strRet;
unsigned short nPort;
DWORD dwServiceType;

strInfo.Format("strUrl is %s\n",strUrl);
printf("strUrl is %s\n",strUrl);

strInfo.Format("strPara is %s\n",strPara);
printf("strPara is %s\n",strPara);

if(!AfxParseURL(strUrl, dwServiceType, strServer, strObject, nPort))//不是有效有网络地址!
{
g_DebugMsg.Sprintf("不是有效有网络地址!\n");

return FALSE;
}

strInfo.Format("dwServiceType:%d\n",dwServiceType);
printf("dwServiceType:%d\n",dwServiceType);

strInfo.Format("strServer:%s\n",strServer);
printf("strServer:%s\n",strServer);

strInfo.Format("strObject:%s\n",strObject);
printf("strObject:%s\n",strObject);

strInfo.Format("nPort:%d\n",nPort);
printf("nPort:%d\n",nPort);

CInternetSession sess(_T("faxsms"));

CHttpFile* pFile= NULL;

CHttpConnection *pServer= sess.GetHttpConnection(strServer, nPort);
if(pServer== NULL)//连接服务器失败!
{
strInfo.Format("%s\n","连接服务器失败!");
g_DebugMsg.Sprintf("连接服务器失败!\n");

return FALSE;
}

pFile= pServer->OpenRequest(CHttpConnection::HTTP_VERB_POST,strObject,NULL,1,NULL,NULL,INTERNET_FLAG_EXISTING_CONNECT);
if(pFile== NULL)//找不到网络地址
{
g_DebugMsg.Sprintf("找不到网络地址!\n");

sess.Close();
return FALSE;
}

pFile-> AddRequestHeaders("Content-Type: application/x-www-form-urlencoded");

// pFile-> AddRequestHeaders("Content-Type: HappiGo/Process");

// pFile-> AddRequestHeaders("Accept: */*");

if (!pFile->SendRequest(NULL,0,(LPTSTR)(LPCTSTR)strPara, strPara.GetLength()))
{
g_DebugMsg.Sprintf("SendRequest error!\n");

pFile->Close();
sess.Close();

return FALSE;
}

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)
if( bSuccess&& dwStatus==200)
{
strInfo.Format("dwStatus:%d\n",dwStatus);
printf("dwStatus:%d\n",dwStatus);

char buffer[2049];
memset(buffer,0,2049);

int nReadCount=0;

while((nReadCount= pFile->Read(buffer,2048))>0)
{
strContent+= buffer;
memset(buffer,0,2049);
}

//strInfo.Format("strContent:%s\n",strContent);
//g_DebugMsg.Sprintf("return Content :%s\n",strContent);
bRet=TRUE;
}
else//错误
{
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);
}

strInfo.Format("strContent:%s\n",strContent);
g_DebugMsg.Sprintf("return Content :%s\n",strContent);
}

bRet=FALSE;
}

pFile->Close();
sess.Close();

}
catch (CInternetException *e)
{
g_DebugMsg.Sprintf("ERROR001 :error code is %ld\n",e->m_dwError);

bRet=FALSE;

}
catch (...)
{
g_DebugMsg.Sprintf("Unknown Error\n");

bRet=FALSE;
}

return bRet;
}

CPP-网络/通信:POST的更多相关文章

  1. [转]Android的网络与通信

    本文转自:http://www.cnblogs.com/qingblog/archive/2012/06/15/2550735.html 第一部分 Android网络基础   Android平台浏览器 ...

  2. socket 网络编程

    1. 基础socket库 socket.h: /** * 网络套接字库 */ #ifndef Socket_h #define Socket_h #include <stdio.h> #i ...

  3. Day8 - Python网络编程 Socket编程

    Python之路,Day8 - Socket编程进阶   本节内容: Socket语法及相关 SocketServer实现多并发 Socket语法及相关 socket概念 socket本质上就是在2台 ...

  4. HCNA之网络通信基础

    一.通信与网络 通信的概念我们并不陌生,在人类社会的起源和发展过程中,通信就直伴随着我们.般认为, 20世纪七.八十年代,人类社会已进入到信息时代,对于生活在信息时代的我们,通信的必要性和重要性更是不 ...

  5. 初学Python——Socket网络编程

    认识socket socket本质上就是在2台网络互通的电脑之间,架设一个通道,两台电脑通过这个通道来实现数据的互相传递.我们知道网络 通信 都 是基于 ip+port(端口) 方能定位到目标的具体机 ...

  6. go语言之行--网络编程、http处理流程详情

    一.简介 go语言中的网络编程主要通过net包实现,net包提供了网络I/O接口,包括HTTP.TCP/IP.UDP.域名解析和Unix域socket等.和大多数语言一样go可以使用几行代码便可以启动 ...

  7. docker进阶——数据管理与网络

    一.数据卷管理 用户在使用 Docker 的过程中,势必需要查看容器内应用产生的数据,或者 需要将容器内数据进行备份,甚至多个容器之间进行数据共享,这必然会涉及 到容器的数据管理 (1)Data Vo ...

  8. Day8-Python3基础-Socket网络编程

    目录: 1.Socket语法及相关 2.SocketServer实现多并发 Socket语法及相关 socket概念 socket本质上就是在2台网络互通的电脑之间,架设一个通道,两台电脑通过这个通道 ...

  9. Python之网络编程 Socket编程

    本节内容: Socket语法及相关 SocketServer实现多并发 Socket语法及相关 socket概念 socket本质上就是在2台网络互通的电脑之间,架设一个通道,两台电脑通过这个通道来实 ...

  10. Day8-面向对象进阶&&socket基础

    抽象类 python2中的写法 import abc class Alert(object): '''报警基类''' __metaclass__ = abc.ABCMeta @abc.abstract ...

随机推荐

  1. SQL Server服务器连接配置

    一.首先确保服务器能在本地打开数据库 如果碰到本地无法连接到数据库,首先要确认上图中两个服务是否开启 二.其次,要配置远端可连接的用户 如图,配置数据库[属性]中[安全性]为混合验证,勾中允许远程连接 ...

  2. Easyui TextBox 添加事件的方法

    $("#txtPaySideId").textbox('textbox').bind("click", function () { showPlatform() ...

  3. builtin_shaders-5.3.4f1学习-Sprites-Default

    Shader "Sprites/Default" { Properties { [PerRendererData] _MainTex ("Sprite Texture&q ...

  4. [原创]内网渗透专用SSH连接工具sshcmd/sshshell/ssh密码破解以及Kali开启SSH

    目录 1.Kali开启SSH 2.SSH连接工具优缺点 3.渗透专用SSH连接工具 4.ssh执行cmd源码 5.批量SSH密码破解 6.相关工具下载 0x001 SSH配置 1.打开文件 etc/s ...

  5. hibernate添加帮助文档和源码

  6. Codeforces 1132G(关系转化树+dfn+线段树)

    要点 显然要滑动修改维护. 像通常的数列next关系一样建边(单调栈预处理),因为贪心所以是树,然后发现增删只会影响区间内的子(or父,看你连边方向行事)节点,于是使用dfs序建线段树. 为了正确地修 ...

  7. SNMP消息传输机制

    1.引言 基于TCP/IP的网络管理包含3个组成部分: 1) 一个管理信息库MIB(Management Information Base).管理信息库包含所有代理进程的所有可被查询和修改的参数.RF ...

  8. JAVA常用知识总结(七)——Spring

    如果一个接口有2个不同的实现, 如何Autowire某一个指定的实现? 1.通过增加@Qualifier(实现类的名字): @Autowired @Qualifier("GirlStuden ...

  9. Navicate Premium连接Oracle数据库报错

    Navicat Premium连接MySQL数据库没有问题,在连接Oracle数据库的时候报错,提示:ORA-28547:connection to server failed,probable Or ...

  10. lnmp.org + phpstorm + xdebug

    lnmp.org下载安装包安装之: lnmp是个集成安装包,就不用自己在配置lnmp环境 安装phpstorm,破解方法:注册服务器为http://idea.lanyus.com 就可以了 xdebu ...