首页 > c++ 编写httpget下载七牛资源报错 报错位置如下!谢谢你们帮我解答!

c++ 编写httpget下载七牛资源报错 报错位置如下!谢谢你们帮我解答!

UINT CHTTPDownload::SendRequest(BOOL bHead)
{

CString strVerb;
if( bHead )    strVerb = _T("HEAD ");
else           strVerb = _T("GET ");

CString            strSend,strHeader,strRange;

int                iStatus = 0, nRet;
char            szReadBuf[1025];
DWORD            dwContentLength,dwStatusCode;

while (TRUE)
{
    if(m_pSocket.m_hSocket != NULL)
        m_pSocket.Close();
    m_pSocket.Create();
    m_pSocket.Connect(m_strServer, m_nPort);
    
    strSend  = strVerb  + m_strObject + " HTTP/1.1\r\n";
    strSend += "Host: " + m_strServer + "\r\n";
    strSend += "Accept: */*\r\n";
    strSend += "Pragma: no-cache\r\n"; 
    strSend += "Cache-Control: no-cache\r\n";
    if( !m_strReferer.IsEmpty() )
        strSend += "Referer: " + m_strReferer + "\r\n";
    strSend += "Connection: close\r\n";
    strRange = "Range: bytes=100-\r\n";
    strSend += strRange;        
    strSend += "\r\n";//必须要加一个空行,否则Http服务器将不会应答
    
    int ret = m_pSocket.Send(strSend.GetBuffer(0), strSend.GetLength());
    strSend.ReleaseBuffer();
    
    strHeader.Empty();
    while( TRUE )
    {
        ZeroMemory(szReadBuf,1025);
        ret = m_pSocket.Receive(szReadBuf, 1025);
        
        if( szReadBuf[0] == '\0' ) // We have encountered "\r\n\r\n"
            break; 
        
        strHeader += szReadBuf;
        if( iStatus == 0)
            strHeader += "\r\n";
    }
    
    nRet = GetInfo(strHeader,dwContentLength,dwStatusCode,m_TimeLastModified);
    switch ( nRet )
    {
        case HTTP_FAIL:
            return SENDREQUEST_FAIL;
            break;
        case HTTP_ERROR:
            return SENDREQUEST_ERROR;
            break;
        case HTTP_REDIRECT:
            continue;
            break;
        case HTTP_OK:
            m_dwDownloadSize = dwContentLength + 100;
        
        if( strRange.IsEmpty() )
            m_dwFileSize = dwContentLength + 100; // 整个文件的长度
        else
        {
            if ( dwStatusCode == 206 )    //支持断点续传
            {
                m_bSupportResume = TRUE;
                m_dwFileSize = dwContentLength + 100;
            }
            else                        //不支持断点续传
            {
                m_bSupportResume = FALSE;
                m_dwFileSize = dwContentLength + 100;
            }
        }
        return SENDREQUEST_SUCCESS;
        break;
    default:
        return SENDREQUEST_FAIL;
        break;
    }
}
m_pSocket.Close();
return SENDREQUEST_SUCCESS;

}

【热门文章】
【热门文章】