您当前的位置: 首页 >  http

phymat.nico

暂无认证

  • 2浏览

    0关注

    1967博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

VC实现HTTP协议的GET和POST方法

phymat.nico 发布时间:2015-01-10 10:49:19 ,浏览量:2


 
 

关键词: VC实现HTTP协议的GET和POST                                          

以下是两个文件:HttpClient.h   HttpClient.cpp   一个类     (错误检测部分没有加入)     使用方法     1:get方式     CHttpClient   conn;     CString   value="http://8crystal.com/test.asp";                       value=conn.doGet(value);     2:post方式     CHttpClient   conn;     CString   value="http://8crystal.com/test.asp";     conn.addParam("name1","value1");     conn.addParam("name2","value2");     conn.addParam("name3","value3");     conn.addParam("name4","value4");     conn.addParam("name5","value5");     conn.addParam("name6","value6");     value=conn.doPost(value);               //   HttpClient.h:   interface   for   the   CHttpClient   class.     //     //         #if   !defined(AFX_HTTPCLIENT_H__EA769DCB_AAB9_47CD_BD87_FBD6913592C5__INCLUDED_)     #define   AFX_HTTPCLIENT_H__EA769DCB_AAB9_47CD_BD87_FBD6913592C5__INCLUDED_         #if   _MSC_VER   >   1000     #pragma   once     #endif   //   _MSC_VER   >   1000     #include   "wininet.h"     #include   "afxinet.h"     class   CHttpClient         {     public:     void   addParam(CString   name,CString   value);     CString   doPost(CString   href);     CString   doGet(CString   href);     CHttpClient();     virtual   ~CHttpClient();         private:     CString   CONTENT;     int   CL;     CStringList   values;     CStringList   names;     };         #endif   //   !defined(AFX_HTTPCLIENT_H__EA769DCB_AAB9_47CD_BD87_FBD6913592C5__INCLUDED_)         ++++++++++++++++++++++++++++++++++++++             //   HttpClient.cpp:   implementation   of   the   CHttpClient   class.     //     //         #include   "stdafx.h"     #include   "emailsenderv2.h"     #include   "HttpClient.h"         #ifdef   _DEBUG     #undef   THIS_FILE     static   char   THIS_FILE[]=__FILE__;     #define   new   DEBUG_NEW     #endif         //     //   Construction/Destruction     //         CHttpClient::CHttpClient()     {         }         CHttpClient::~CHttpClient()     {         }         CString   CHttpClient::doGet(CString   href)     {     CString   httpsource="";     CInternetSession   session1(NULL,0);     CHttpFile*   pHTTPFile=NULL;     try{     pHTTPFile=(CHttpFile*)session1.OpenURL(href);     //session1.     }catch(CInternetException){     pHTTPFile=NULL;     }     if(pHTTPFile)     {     CString   text;     for(int   i=0;pHTTPFile->ReadString(text);i++)     {     httpsource=httpsource+text+"/r/n";     }     pHTTPFile->Close();     delete   pHTTPFile;     }else     {         }     return   httpsource;     }         CString   CHttpClient::doPost(CString   href)     {     CString   httpsource="";     CInternetSession   session1;     CHttpConnection*   conn1=NULL;             CHttpFile*   pFile   =   NULL;         CString   strServerName;             CString   strObject;             INTERNET_PORT   nPort;             DWORD   dwServiceType;     AfxParseURL((LPCTSTR)href,dwServiceType,   strServerName,   strObject,   nPort);             DWORD   retcode;                         char*   outBuff   =   CONTENT.GetBuffer(1000);             try                 {                                     conn1   =   session1.GetHttpConnection(strServerName,nPort);                             pFile   =   conn1->OpenRequest(0,strObject,NULL,1,NULL,"HTTP/1.1",INTERNET_FLAG_EXISTING_CONNECT|INTERNET_FLAG_NO_AUTO_REDIRECT);                             pFile   ->   AddRequestHeaders("Content-Type:   application/x-www-form-urlencoded");                             pFile   ->   AddRequestHeaders("Accept:   */*");                                             pFile   ->   SendRequest(NULL,0,outBuff,strlen(outBuff)+1);                                     pFile   ->   QueryInfoStatusCode(retcode);                             }                                       catch   (CInternetException   *   e){};                     if(pFile)     {     CString   text;     for(int   i=0;pFile->ReadString(text);i++)     {     httpsource=httpsource+text+"/r/n";     }     pFile->Close();     }else     {         }     return   httpsource;             delete   pFile;                     delete   conn1;                     session1.Close();     }         void   CHttpClient::addParam(CString   name,   CString   value)     {     names.AddTail((LPCTSTR)name);     values.AddTail((LPCTSTR)value);     CString   eq="=";     CString   an="&";     CONTENT=CONTENT+name+eq+value+an;     CL=CONTENT.GetLength();     }  

关注
打赏
1659628745
查看更多评论
立即登录/注册

微信扫码登录

0.0446s