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><a href="../../../nn/Overview.html">nn</a>::<a href="../../../nn/http/Overview.html">http</a>::<a href="../../../nn/http/Connection/Overview.html">Connection</a>::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<a href="../../../nn/Result/Overview.html">nn::Result</a> Read( 19 u8 * pBodyBuf, 20 size_t bufLen, 21 const <a href="../../../nn/fnd/TimeSpan/Overview.html">nn::fnd::TimeSpan</a> & timeout 22); 23</pre> 24 </div> 25<h2>List of Overloaded Member Functions</h2> 26 <div class="section"> 27 <table class="members"> 28 <tr> 29 <td> 30<a href="./Read(0).html"><CODE>Read(u8 *, size_t)</CODE> </a> 31 </td> 32<td>Reads an HTTP response.</td> 33 </tr> 34 <tr> 35 <td> 36<a href="./Read(1).html"><CODE>Read(u8 *, size_t, const nn::fnd::TimeSpan &)</CODE> </a> 37 </td> 38<td>This version of <a href="../../../nn/http/Connection/Read.html"><CODE>Read</CODE></a> has a timeout.</td> 39 </tr> </table> 40 </div> 41<h2>Description of <CODE>Read(u8 *, size_t)</CODE></h2> 42<div class="section"><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>These functions immediately return their results after the successful completion of <CODE><a href="../../../nn/http/Connection/Read.html">Read</a></CODE> because the header has already been received.<br /> <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. If the receive operation succeeds but a message indicates a communication error (such as authentication failure), the <CODE><a href="../../../nn/http/Connection/Read.html">Read</a></CODE> function will nevertheless return a value indicating success.<br /> If you want to check on errors of this type, use the status code obtained from the <CODE><a href="../../../nn/http/Connection/GetStatusCode.html">GetStatusCode</a></CODE>.<br /> <B>Note:</B> Unlike <CODE><a href="../../../nn/http/Connection/Read.html">Read</a></CODE>, which 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> 43<h2>Description of <CODE>Read(u8 *, size_t, const nn::fnd::TimeSpan &)</CODE></h2> 44<div class="section"><p>Other than allowing the caller to specify a timeout, this version functions identically to <a href="../../../nn/http/Connection/Read.html"><CODE>Read</CODE></a>. For feature details, see the function reference for the version without a timeout. Returns <a href="../../../nn/http/ResultTimeout/Overview.html"><CODE>ResultTimeout</CODE></a> if no HTTP response has been fully received or if the buffer has not filled within the timeout period. If <CODE>ResultTimeout</CODE> is returned, the connection is automatically canceled. (In other words, the function internally implements <a href="../../../nn/http/Connection/Cancel.html"><CODE>Cancel</CODE></a>.)<br /></p><!-- write here --></div> 45 <hr><p>CONFIDENTIAL</p></body> 46</html> 47