⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lyoulhttpclient.aspx.htm

📁 CHttpClient的目的是用于简化WinInet的API
💻 HTM
📖 第 1 页 / 共 5 页
字号:

<p>In your <em>stdafx.h</em> file, add the following line:</p>

<div class="no-vmads"><pre lang="c++"><span class="code-preprocessor">#include</span><span class="code-preprocessor"> <span class="code-string">"</span><span class="code-string">RyeolHttpClient.h"</span></span></pre></div>

<p><strong>Note</strong>: The namespace and file names have been changed. If you use the previous version of the <code>CHttpClient</code>, you need to update as follows:</p>

<ul>
<li><em>LyoulException.h --&gt; RyeolException.h</em> </li>

<li><em>LyoulException.cpp --&gt; RyeolException.cpp</em> </li>

<li><em>LyoulHttpClient.h --&gt; RyeolHttpClient.h</em> </li>

<li><em>LyoulHttpClient.cpp --&gt; RyeolHttpClient.cpp</em> </li>

<li><em>#include "LyoulHttpClient.h" --&gt; #include "RyeolHttpClient.h"</em> </li>

<li><em>using namespace Lyoul --&gt; using namespace Ryeol</em> </li>
</ul>

<h2>How to Send a Request Using HTTP GET</h2>

<p><code>CHttpClient</code> supports <code>RequestGet</code> method which sends a request using HTTP GET:</p>

<div class="no-vmads"><pre lang="c++"><span class="code-comment">//</span><span class="code-comment"> Retrieves the resource specified by the szUrl using HTTP GET request.
</span>
<span class="code-comment">//</span><span class="code-comment"> szUrl            [in] A HTTP URL.
</span>
<span class="code-comment">//</span><span class="code-comment"> bUseCache        [in] Specifies whether to use cache.
</span>
CHttpResponse * CHttpClient::RequestGet (PCSZ szUrl, 
   BOOL bUseCache = FALSE) <span class="code-keyword">throw</span> (Exception &amp;) ;</pre></div>

<p>The following code demonstrates the basic usage of the <code>RequestGet</code> method:</p>

<div class="SmallText" id="premain2" style="width: 100%; cursor: pointer;"><img preid="2" src="lyoulhttpclient.aspx_files/minus.gif" id="preimg2" height="9" width="9"><span preid="2" style="margin-bottom: 0pt;" id="precollapse2"> Collapse</span></div><div style="margin-top: 0pt;" id="pre2" class="no-vmads"><pre lang="c++"><span class="code-keyword">using</span> <span class="code-keyword">namespace</span> Ryeol ;

CHttpClient         objHttpReq ;
CHttpResponse *     pobjHttpRes = NULL ;

<span class="code-keyword">try</span> {
    <span class="code-comment">//</span><span class="code-comment"> Initialize the User Agent
</span>
    objHttpReq.SetInternet (_T (<span class="code-string">"</span><span class="code-string">My User Agent v1.0"</span>)) ;

    <span class="code-comment">//</span><span class="code-comment"> Specifies whether to use UTF-8 encoding. 
</span>
    <span class="code-comment">//</span><span class="code-comment"> (This uses ANSI encoding)
</span>
    <span class="code-comment">//</span><span class="code-comment"> Default is FALSE
</span>
    objHttpReq.SetUseUtf8 (FALSE) ;

    <span class="code-comment">//</span><span class="code-comment"> Specifies a code page for ANSI strings. 
</span>
    <span class="code-comment">//</span><span class="code-comment"> (This uses Korean)
</span>
    <span class="code-comment">//</span><span class="code-comment"> Default is CP_ACP
</span>
    objHttpReq.SetAnsiCodePage (<span class="code-digit">949</span>) ;

    <span class="code-comment">//</span><span class="code-comment"> Add user's custom HTTP headers
</span>
    objHttpReq.AddHeader (_T (<span class="code-string">"</span><span class="code-string">Ryeol-Magic"</span>), _T (<span class="code-string">"</span><span class="code-string">My Magic Header"</span>)) ;
    objHttpReq.AddHeader (_T (<span class="code-string">"</span><span class="code-string">User-Magic"</span>), _T (<span class="code-string">"</span><span class="code-string">User's Magic Header"</span>)) ;

    <span class="code-comment">//</span><span class="code-comment"> Add user's parameters
</span>
    objHttpReq.AddParam (_T (<span class="code-string">"</span><span class="code-string">where"</span>), _T (<span class="code-string">"</span><span class="code-string">nexearch"</span>)) ;
    objHttpReq.AddParam (_T (<span class="code-string">"</span><span class="code-string">frm"</span>), _T (<span class="code-string">"</span><span class="code-string">t1"</span>)) ;
    objHttpReq.AddParam (_T (<span class="code-string">"</span><span class="code-string">query"</span>), 
       _T (<span class="code-string">"</span><span class="code-string">%C3%D6%C1%F6%BF%EC"</span>), CHttpClient::ParamEncodedValue) ;

    <span class="code-comment">//</span><span class="code-comment"> Send a request
</span>
    pobjHttpRes = 
      objHttpReq.RequestGet (_T (<span class="code-string">"</span><span class="code-string">http://search.naver.com/search.naver"</span>)) ;

    ...     <span class="code-comment">//</span><span class="code-comment"> Place codes to handle the returned CHttpResponse object.
</span>

} <span class="code-keyword">catch</span> (httpclientexception &amp; e) {
    ...     <span class="code-comment">//</span><span class="code-comment"> Place exception handling codes here.
</span>
}</pre></div>

<h2>How to Send a Request Using HTTP POST</h2>

<p>The HTTP POST method is used in two ways. One is to post simple text, the other is to upload files. To post simple text, <code>CHttpClient</code> provides <code>BeginPost</code> method.</p>

<div class="no-vmads"><pre lang="c++"><span class="code-comment">//</span><span class="code-comment"> Starts a new HTTP POST request
</span>
<span class="code-comment">//</span><span class="code-comment"> szUrl            [in] A HTTP URL.
</span>
<span class="code-comment">//</span><span class="code-comment"> bUseCache        [in] Specifies whether to use cache.
</span>
<span class="code-keyword">void</span> CHttpClient::BeginPost (PCSZ szUrl, 
   BOOL bUseCache = FALSE) <span class="code-keyword">throw</span> (Exception &amp;) ;</pre></div>

<p>The following code demonstrates the basic usage of the <code>BeginPost</code> method:</p>

<div class="SmallText" id="premain4" style="width: 100%; cursor: pointer;"><img preid="4" src="lyoulhttpclient.aspx_files/minus.gif" id="preimg4" height="9" width="9"><span preid="4" style="margin-bottom: 0pt;" id="precollapse4"> Collapse</span></div><div style="margin-top: 0pt;" id="pre4" class="no-vmads"><pre lang="c++"><span class="code-keyword">using</span> <span class="code-keyword">namespace</span> Ryeol ;

CHttpClient         objHttpReq ;
CHttpResponse *     pobjHttpRes = NULL ;

<span class="code-keyword">try</span> {
    <span class="code-comment">//</span><span class="code-comment"> Initialize the User Agent
</span>
    objHttpReq.SetInternet (_T (<span class="code-string">"</span><span class="code-string">My User Agent v1.0"</span>)) ;

    <span class="code-comment">//</span><span class="code-comment"> Add user's custom HTTP headers
</span>
    objHttpReq.AddHeader (_T (<span class="code-string">"</span><span class="code-string">Ryeol-Magic"</span>), _T (<span class="code-string">"</span><span class="code-string">My Magic Header"</span>)) ;
    objHttpReq.AddHeader (_T (<span class="code-string">"</span><span class="code-string">User-Magic"</span>), _T (<span class="code-string">"</span><span class="code-string">User's Magic Header"</span>)) ;

    <span class="code-comment">//</span><span class="code-comment"> Add user's parameters
</span>
    objHttpReq.AddParam (_T (<span class="code-string">"</span><span class="code-string">st"</span>), _T (<span class="code-string">"</span><span class="code-string">kw"</span>)) ;
    objHttpReq.AddParam (_T (<span class="code-string">"</span><span class="code-string">target"</span>), _T (<span class="code-string">"</span><span class="code-string">WinInet"</span>)) ;

    <span class="code-comment">//</span><span class="code-comment"> Start a new request
</span>
    objHttpReq.BeginPost (_T (<span class="code-string">"</span><span class="code-string">http://www.codeproject.com/info/search.asp"</span>)) ;

    <span class="code-comment">//</span><span class="code-comment"> Specifies the number of bytes to send when the Proceed method is called.
</span>
    <span class="code-keyword">const</span> DWORD     cbProceed = <span class="code-digit">1024</span> ;  <span class="code-comment">//</span><span class="code-comment"> 1K
</span>

    <span class="code-keyword">do</span> {

        ...     <span class="code-comment">//</span><span class="code-comment"> Place codes to report progress information to user.
</span>
    } <span class="code-keyword">while</span> ( !(pobjHttpRes = objHttpReq.Proceed (cbProceed)) ) ;
    ...     <span class="code-comment">//</span><span class="code-comment"> Place codes to handle the returned CHttpResponse object.
</span>
} <span class="code-keyword">catch</span> (httpclientexception &amp; e) {
    ...     <span class="code-comment">//</span><span class="code-comment"> Place exception handling codes here.
</span>
}</pre></div>

<p>To upload file, <code>CHttpClient</code> provides <code>BeginUpload</code> method.</p>

<div class="no-vmads"><pre><span class="code-comment">//</span><span class="code-comment"> Starts a new UPLOAD request
</span>
<span class="code-comment">//</span><span class="code-comment"> szUrl            [in] A HTTP URL.
</span>
<span class="code-comment">//</span><span class="code-comment"> bUseCache        [in] Specifies whether to use cache.
</span>
<span class="code-keyword">void</span> CHttpClient::BeginUpload (PCSZ szUrl, 
   BOOL bUseCache = FALSE) <span class="code-keyword">throw</span> (Exception &amp;) ;</pre></div>

<p>The following code demonstrates the basic usage of the <code>BeginUpload</code> method:</p>

<div class="SmallText" id="premain6" style="width: 100%; cursor: pointer;"><img preid="6" src="lyoulhttpclient.aspx_files/minus.gif" id="preimg6" height="9" width="9"><span preid="6" style="margin-bottom: 0pt;" id="precollapse6"> Collapse</span></div><div style="margin-top: 0pt;" id="pre6" class="no-vmads"><pre lang="c++"><span class="code-keyword">using</span> <span class="code-keyword">namespace</span> Ryeol ;

CHttpClient         objHttpReq ;
CHttpResponse *     pobjHttpRes = NULL ;

<span class="code-keyword">try</span> {
    <span class="code-comment">//</span><span class="code-comment"> Initialize the User Agent
</span>
    objHttpReq.SetInternet (_T (<span class="code-string">"</span><span class="code-string">My User Agent v1.0"</span>)) ;

    <span class="code-comment">//</span><span class="code-comment"> Add user's custom HTTP headers
</span>
    objHttpReq.AddHeader (_T (<span class="code-string">"</span><span class="code-string">Ryeol-Magic"</span>), _T (<span class="code-string">"</span><span class="code-string">My Magic Header"</span>)) ;
    objHttpReq.AddHeader (_T (<span class="code-string">"</span><span class="code-string">User-Magic"</span>), _T (<span class="code-string">"</span><span class="code-string">User's Magic Header"</span>)) ;

    <span class="code-comment">//</span><span class="code-comment"> Add user's parameters
</span>
    objHttpReq.AddParam (_T (<span class="code-string">"</span><span class="code-string">nohtml"</span>), _T (<span class="code-string">"</span><span class="code-string">1"</span>)) ;
    objHttpReq.AddParam (_T (<span class="code-string">"</span><span class="code-string">title"</span>), _T (<span class="code-string">"</span><span class="code-string">The K-NET photo"</span>)) ;
    objHttpReq.AddParam (_T (<span class="code-string">"</span><span class="code-string">content"</span>), _T (<span class="code-string">"</span><span class="code-string">A photo of the K-NET"</span>)) ;

    <span class="code-comment">//</span><span class="code-comment"> Specifies a file to upload
</span>
    objHttpReq.AddParam (_T (<span class="code-string">"</span><span class="code-string">ufile01"</span>), 
       _T (<span class="code-string">"</span><span class="code-string">D:\\My Photo\\K-NET\\photo1.jpg"</span>), 
       CHttpClient::ParamFile) ;

    <span class="code-comment">//</span><span class="code-comment"> Start a new request
</span>
    objHttpReq.BeginUpload (_T (<span class="code-string">"</span><span class="code-string">http://club.hooriza.com"</span>)
       _T (<span class="code-string">"</span><span class="code-string">/cmd/box.html?clubid=1&amp;boxid=53&amp;action=store&amp;link="</span>)) ;

    <span class="code-comment">//</span><span class="code-comment"> Specifies the number of bytes to send when the Proceed method is called.
</span>
    <span class="code-keyword">const</span> DWORD     cbProceed = <span class="code-digit">1024</span> ;  <span class="code-comment">//</span><span class="code-comment"> 1K
</span>

    <span class="code-keyword">do</span> {

        ...     <span class="code-comment">//</span><span class="code-comment"> Place codes to report progress information to user.
</span>
    } <span class="code-keyword">while</span> ( !(pobjHttpRes = objHttpReq.Proceed (cbProceed)) ) ;
    ...     <span class="code-comment">//</span><span class="code-comment"> Place codes to handle the returned CHttpResponse object.
</span>
} <span class="code-keyword">catch</span> (httpclientexception &amp;&amp; e) {
    ...     <span class="code-comment">//</span><span class="code-comment"> Place exception handling codes here.
</span>
}</pre></div>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -