rho::net::CNetResponseWrapper CNetRequestWrapper::pushMultipartData(const String& strUrl, CMultipartItem& oItem, IRhoSession* oSession, Hashtable<String,String>* pHeaders) { VectorPtr<CMultipartItem*> arItems; arItems.addElement(&oItem); rho::net::CNetResponseWrapper oResp = pushMultipartData(strUrl, arItems, oSession, pHeaders); arItems[0] = 0; //do not delete item return oResp; }
INetResponse* CNetRequest::pushMultipartData(const String& strUrl, CMultipartItem& oItem, IRhoSession* oSession, Hashtable<String,String>* pHeaders) { m_bCancel = false; VectorPtr<CMultipartItem*> arItems; arItems.addElement(&oItem); INetResponse* pResp = pushMultipartData(strUrl, arItems, oSession, pHeaders); arItems[0] = 0; //do not delete item return pResp; }
void CAsyncHttp::CHttpCommand::execute() { NetResponse resp; switch( m_eCmd ) { case hcGet: resp = getNet().doRequest( m_params.getString("http_command", "GET").c_str(), m_params.getString("url"), m_params.getString("body"), null, &m_mapHeaders); break; case hcPost: resp = getNet().doRequest(m_params.getString("http_command", "POST").c_str(), m_params.getString("url"), m_params.getString("body"), null, &m_mapHeaders); break; case hcDownload: resp = getNet().pullFile(m_params.getString("url"), m_params.getString("filename"), null, &m_mapHeaders); break; case hcUpload: { VectorPtr<net::CMultipartItem*> arMultipartItems; CRhoParamArray arParams( m_params, "multipart"); if ( arParams.size() > 0 ) { for( int i = 0; i < arParams.size(); i++) { CRhoParams oItem = arParams.getItem(i); net::CMultipartItem* pItem = new net::CMultipartItem(); String strFilePath = oItem.getString("filename"); if ( strFilePath.length() == 0 ) { pItem->m_strBody = oItem.getString("body"); pItem->m_strContentType = oItem.getString("content_type", ""); } else { pItem->m_strFilePath = strFilePath; pItem->m_strContentType = oItem.getString("content_type", "application/octet-stream"); } pItem->m_strName = oItem.getString("name"); pItem->m_strFileName = oItem.getString("filename_base"); arMultipartItems.addElement(pItem); } }else { net::CMultipartItem* pItem = new net::CMultipartItem(); pItem->m_strFilePath = m_params.getString("filename"); pItem->m_strContentType = m_params.getString("file_content_type", "application/octet-stream"); pItem->m_strName = m_params.getString("name"); pItem->m_strFileName = m_params.getString("filename_base"); arMultipartItems.addElement(pItem); String strBody = m_params.getString("body"); if ( strBody.length() > 0 ) { net::CMultipartItem* pItem2 = new net::CMultipartItem(); pItem2->m_strBody = strBody; pItem2->m_strContentType = m_mapHeaders.get("content-type"); arMultipartItems.addElement(pItem2); } } resp = getNet().pushMultipartData( m_params.getString("url"), arMultipartItems, null, &m_mapHeaders ); break; } default: ; } if ( !m_NetRequest.isCancelled()) callNotify(resp,0); m_params.free_params(); }