1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xml:lang="en-US" lang="en-US" xmlns="http://www.w3.org/1999/xhtml">
3  <head>
4    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
5    <meta http-equiv="Content-Style-Type" content="text/css" />
6    <link rel="stylesheet" href="../../../css/manpage.css" type="text/css" />
7<title>Read</title>
8  </head>
9  <body>
10<h1><CODE>nn::http::Connection::Read</CODE> Member Function</h1>
11<h2>Syntax</h2>
12    <div class="section">
13      <pre class="definition">
14<a href="../../../nn/Result/Overview.html">nn::Result</a> Read(
15     u8 * pBodyBuf,
16     size_t bufLen
17);
18</pre>
19    </div>
20<h2>Arguments</h2>
21    <div class="section">
22      <table class="arguments">
23        <thead>
24          <tr>
25            <td width="15" />
26<th>Name</th>
27<td>Description</td>
28          </tr>
29        </thead>
30        <tr>
31<td>out</td>
32<th>pBodyBuf</th>
33<td>Buffer storing the HTTP response message body.</td>
34        </tr>
35        <tr>
36<td>in</td>
37<th>bufLen</th>
38<td>Size of <SPAN class="argument">pBodyBuf</SPAN>.</td>
39        </tr> </table>
40    </div>
41<h2>Return Values</h2>
42<div class="section">Returns the function's execution result. Returns one of the <a href="../../../../nn/Result/Overview.html"><CODE>Result</CODE></a> values listed below. <br />
43      <table class="arguments">
44        <thead>
45          <tr>
46<th>Value</th>
47<td>Description</td>
48          </tr>
49        </thead>
50        <tr>
51<th><CODE>ResultSuccess</CODE></th>
52<td>Process was successful.</td>
53        </tr>
54        <tr>
55<th>ResultBodyBufShortage</th>
56<td>Result indicating that the message body is bigger than the buffer and cannot be fully read.</td>
57        </tr>
58        <tr>
59<th>ResultSocketKeepAliveDisconnected</th>
60<td>Error indicating that the server disconnected the keep-alive connection. The HTTP library usually reconnects automatically when the server disconnects a keep-alive connection, but if set to the <a href="../../../nn/http/Connection/SetLazyPostDataSetting.html"><CODE>SetLazyPostDataSetting</CODE></a> mode, the HTTP library does not automatically reconnect to resend <CODE>POST</CODE> data and instead returns this error. To reconnect, first call the <a href="../../../nn/ssl/Connection/Overview.html"><CODE>Connection</CODE></a> object's <a href="../../../nn/ssl/Finalize.html"><CODE>Finalize</CODE></a> function, and then call <a href="../../../nn/ssl/Connection/Initialize.html"><CODE>Initialize</CODE></a> again.</td>
61        </tr>
62        <tr>
63<th>ResultRequestHeaderErr</th>
64<td>Error indicating that an invalid HTTP header was received.</td>
65        </tr>
66        <tr>
67<th>ResultSocketSendErr</th>
68<td>Error indicating failure to send socket data. This could be because the server disconnected. To reconnect, first call the <a href="../../../nn/ssl/Connection/Overview.html"><CODE>Connection</CODE></a> object's <a href="../../../nn/ssl/Finalize.html"><CODE>Finalize</CODE></a> function, and then call <a href="../../../nn/ssl/Connection/Initialize.html"><CODE>Initialize</CODE></a> again.</td>
69        </tr>
70        <tr>
71<th>ResultSocketReceiveErr</th>
72<td>Error indicating failure to receive socket data. This could be because the server disconnected. To reconnect, first call the <a href="../../../nn/ssl/Connection/Overview.html"><CODE>Connection</CODE></a> object's <a href="../../../nn/ssl/Finalize.html"><CODE>Finalize</CODE></a> function, and then call <a href="../../../nn/ssl/Connection/Initialize.html"><CODE>Initialize</CODE></a> again.</td>
73        </tr>
74        <tr>
75<th>ResultSocketConnectErr</th>
76<td>Error indicating failure to connect to socket. This could be because the server does not exist or is not running. To reconnect, first call the <a href="../../../nn/ssl/Connection/Overview.html"><CODE>Connection</CODE></a> object's <a href="../../../nn/ssl/Finalize.html"><CODE>Finalize</CODE></a> function, and then call <a href="../../../nn/ssl/Connection/Initialize.html"><CODE>Initialize</CODE></a> again.</td>
77        </tr>
78        <tr>
79<th>ResultDnsResolutionErr</th>
80<td>Error indicating that name resolution failed for the host name specified in the URL.</td>
81        </tr>
82        <tr>
83<th>ResultConnectionCanceledErr</th>
84<td>Error indicating that the connection was canceled. To reconnect, first call the <a href="../../../nn/ssl/Connection/Overview.html"><CODE>Connection</CODE></a> object's <a href="../../../nn/ssl/Finalize.html"><CODE>Finalize</CODE></a> function, and then call <a href="../../../nn/ssl/Connection/Initialize.html"><CODE>Initialize</CODE></a> again.</td>
85        </tr>
86        <tr>
87<th>ResultInvalidParamErr</th>
88<td>Error indicating an invalid parameter. Specify valid values for all parameters and call this function again.</td>
89        </tr>
90        <tr>
91<th>ResultNotConnectedErr</th>
92<td>Error indicating that no target URL was assigned to the <CODE>Connection</CODE> object. No action performed because the <CODE>Connection</CODE> object has not been initialized by a successful call of <a href="../../../nn/http/Connection/Initialize.html"><CODE>Initialize</CODE></a>.</td>
93        </tr>
94        <tr>
95<th>ResultNotInitializedErr</th>
96<td>Error indicating that the library is not initialized. None of this library's functions can be used until you first call <a href="../../../nn/http/Initialize.html"><CODE>nn::http::Initialize</CODE></a>.</td>
97        </tr>
98        <tr>
99<th>A value other than the above.</th>
100<td>Unexpected error (See <CODE>http_Result.h</CODE> for details).</td>
101        </tr>
102      </table> </div>
103<h2>Description</h2>
104    <div class="section">
105<p>Reads an HTTP response.</p><p>The data of the message body is stored in the buffer specified in the arguments.<br />If the message body is larger than the buffer, the buffer stores as much of the message body as will fit in it, and an error (with <CODE>Description==ER_RES_BODYBUF_SHORTAGE</CODE>) is returned.<br />If you run the <a href="../../../nn/http/Connection/Read.html"><CODE>Read</CODE></a> function again later, the library continues reading where it left off from the previous call to <a href="../../../nn/http/Connection/Read.html"><CODE>Read</CODE></a>.<br />Once all of the message body data is received, a <CODE>Result</CODE> of <CODE>Success</CODE> is returned.<br /><br />The library maintains the following data corresponding to the message body stored in the user-specified buffer. Get these data items using the corresponding functions.<br />・ Response status (<CODE><a href="../../../nn/http/Connection/GetStatusCode.html">GetStatusCode</a></CODE>)<br />・ Message header (<CODE><a href="../../../nn/http/Connection/GetHeaderField.html">GetHeaderField</a></CODE>/<CODE><a href="../../../nn/http/Connection/GetHeaderAll.html">GetHeaderAll</a></CODE>)<br /><br /><B>Note:</B> If these functions are used before <a href="../../../nn/http/Connection/Read.html"><CODE>Read</CODE></a> is run, they block until the header is completely received. <br /><B>Note:</B>If <a href="../../../nn/http/Connection/Read.html"><CODE>Read</CODE></a> completes successfully, the entire header has been received and these functions return immediately.</a><br /><B>Note:</B> If <CODE><a href="../../../nn/http/Connection/Read.html">Read</a></CODE> returns an error, this indicates a failure to receive the HTTP response itself. <br />The <CODE><a href="../../../nn/http/Connection/Read.html">Read</a></CODE> return value even indicates success, therefore, if the receive operation succeeded and a message indicates a communication error (authentication failure or similar). <br />Use the status code obtained from the <CODE><a href="../../../nn/http/Connection/GetStatusCode.html">GetStatusCode</a></CODE> function to check for these other kinds of errors.<br /> <BR><B>Note:</B> Unlike the version of <a href="../../../nn/http/Connection/Read.html"><CODE>Read</CODE></a> that includes a timeout, this function does not time out. In other words, control will not return from this function until processing has ended. In environments where communications are slow, you can expect a long time to pass before processing ends and control returns from this function. (Processing ends either when the HTTP response is fully received or the buffer is full.)<br /></p><!-- write here --></div>
106<h2>Revision History</h2>
107    <div class="section">
108      <dl class="history">
109        <dt>2010/06/14</dt>
110<dd>Initial version.<br />
111        </dd>
112      </dl>
113    </div>
114  <hr><p>CONFIDENTIAL</p></body>
115</html>
116