Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1340 connectés 

  FORUM HardWare.fr
  Programmation

  [Visual C++] Connexion à ne URL

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Visual C++] Connexion à ne URL

n°21598
Drums
Posté le 31-03-2001 à 09:24:04  profilanswer
 

Une question de petit nouveau en prog. Windows : comment faire ne visual C++ pour se connecter à une URL et ramener une page ?
 
Thx

mood
Publicité
Posté le 31-03-2001 à 09:24:04  profilanswer
 

n°21600
Flying
Posté le 31-03-2001 à 09:51:56  profilanswer
 

Salut,
 
Dans (imaginons une application boite de dialogue)ta ressource de boite de dialogue, tu cliques bouton droit et fais "insère active X control".  Là tu cherches "Navigateur microsoft" et tu l'insères.
Ensuite tu crées une variable qui y fait référence, par exemple m_Browser.
Ensuite dans ton code, tu insères pour naviguer : m_Browser.Navigate("url", NULL, NULL, NULL, NULL);
 
Voilà!
Conculte la doc pour les autres fonctions membres et les paramètres.
 
@+
Flying

n°21606
n0mad
inscrit au XXe siècle
Posté le 31-03-2001 à 12:24:54  profilanswer
 

Si tu veux pouvoir lire le contenu de la page (pour l'analyser par exemple), tu peux utiliser l'ensemble des classes de connections : CHttpFile, CHttpConnection et CInternetSession.  
 
Il y a toute une serie d'exemple dans la doc.
 
Hope this help


---------------
Pipiru piru piru pipiru pi
n°21653
Flying
Posté le 01-04-2001 à 11:17:34  profilanswer
 

Il y a le programme TEAR.CPP qui explique bien comment récupérer le contenu d'une page internet.
Je m'en suis servi pour des essais.
 
Sinon avec le contrôle WebBrowser il y a aussi moyen de récupérer le contenu HTML.  J'ai fait une fonction qui le transfère dans un CString.  Si tu veux je le post ici.
 
@+
Flying

n°21684
verdy_p
Posté le 01-04-2001 à 19:41:34  profilanswer
 

Une méthode basique:
telnet www.nom-du-site.com 80
(ne pas mettre http:// devant www)
puis taper (sans faire de faute de frappe et sans corriger, car le protocole HTTP n'est pas interactif et ne sait pas le faire):
 
GET /chemin/page.html HTTP/1.1
Host: www.nom-du-site.com  
 
(ligne vide au dessus)
 
En réponse tu as
 
200 OK HTTP/1.1
si la requête était correcte
suivi des entêtes MIME terminés par un double saut de ligne, et suivi du corps du document demandé, puis la session se termine.

n°21701
dkomputer
Posté le 01-04-2001 à 22:46:39  profilanswer
 

y'a une méthode toute prête dans le internet sdk... tu files l'url et il te ramene ce qu'il y a à l'autre bout....
je te la file demain du boulot

n°21702
Flying
Posté le 01-04-2001 à 23:01:52  profilanswer
 

Méthode avec WebBrowser control et MFC :
 
//////////////////////////////////////////////////////////////////////
// Transfère dans une variable CSTRING le contenu de la page Web //
//////////////////////////////////////////////////////////////////////
 
CString* CNM_CLIENTDlg::GetHTML()
{
 IUnknown* pUnk;
 LPDISPATCH lpDisp;
 HRESULT hr;
 IHTMLDocument2* pDocument;
 IDispatch* pDispatch;
 IHTMLElementCollection* pCollection;
 
 m_strHTML = "";
 pUnk = m_Browser.GetDocument();  // Get document
 if (pUnk == NULL) return &m_strHTML; // Echec
 
 hr = pUnk->QueryInterface(IID_IDispatch, (void**)&lpDisp);
 if (hr != S_OK) return &m_strHTML;  // Echec
 
 hr = lpDisp->QueryInterface(IID_IHTMLDocument2, (void**)&pDocument);
 
 if ((S_OK == pDocument->get_all(&pCollection)) &&  
  (NULL != pDocument) &&  
  (S_OK == pCollection->tags(_variant_t("HTML" ), &pDispatch))
  && (NULL != pDispatch))
  {
   IHTMLElementCollectionPtr pCollectionHTML = pDispatch;
   if ( pCollectionHTML != NULL )
   {
    IDispatch* pDispatchHTML;
    if ( S_OK == pCollectionHTML->item(_variant_t(0L), _variant_t(), &pDispatchHTML))
    {
     IHTMLElementPtr pHTML = pDispatchHTML;
     if (NULL != pHTML)
     {
      BSTR bstrHTML = NULL;
      if (S_OK == pHTML->get_outerHTML(&bstrHTML))
      {
       m_strHTML = bstrHTML;  // Convertit en CString
       ::SysFreeString(bstrHTML);
       pHTML->Release();
      }
     }
    }
   }
   pCollectionHTML->Release();
  }
 pCollection->Release();
 pDocument->Release();
 lpDisp->Release();
 pUnk->Release();
 return &m_strHTML;
}
 
Flying

n°21705
Flying
Posté le 01-04-2001 à 23:13:41  profilanswer
 

Voilà encore une autre méthode en utilisant les sockets au lieu du controle activeX WebBrowser.
J'ai pas mis les #include ... si quelqu'un en a besoin, je les poste.
 
LPCTSTR pszURL;
CSession session(_T("Nom de la session" ), dwAccessType);
CHttpConnection* pServer = NULL;
CHttpFile* pFile = NULL;
CString strServerName, strObject;
INTERNET_PORT nPort;
DWORD dwServiceType;
DWORD dwRet;
 
if (!AfxParseURL(pszURL, dwServiceType, strServerName, strObject, nPort) ||
 (dwServiceType != INTERNET_SERVICE_HTTP))
{
 // Parsing incorrect
}
pServer = session.GetHttpConnection(strServerName, nPort);
pFile = pServer->OpenRequest(CHttpConnection::HTTP_VERB_GET,
  strObject, NULL, 1, NULL, NULL, dwHttpRequestFlags);
pFile->AddRequestHeaders(szHeaders);
pFile->SendRequest();
 
// Transfert ok ?
pFile->QueryInfoStatusCode(dwRet);
if (dwRet != 200)
{
 // Erreur
}
 
// Transfère le fichier lu dans un CString
CString m_strHtml;
CString CR = "\r\n";
CString strbuffer = "";
while (pFile->ReadString(strbuffer))
 m_strHtml = m_strHtml + strbuffer + CR;
 
pServer->Close();
pFile->Close();
session.Close();
 
__________________
 
Oups...oublié
Définir une classe :
CSession::CSession(LPCTSTR pszAppName, int nMethod)
: CInternetSession(pszAppName, 1, nMethod)
{
}
 
et les variables ci-dessous :
DWORD dwAccessType = PRE_CONFIG_INTERNET_ACCESS;
DWORD dwHttpRequestFlags = INTERNET_FLAG_EXISTING_CONNECT |  
INTERNET_FLAG_NO_AUTO_REDIRECT | INTERNET_FLAG_RELOAD;
TCHAR szHeaders[] = "";

 

[edit]--Message édité par Flying--[/edit]

n°21723
Drums
Posté le 02-04-2001 à 09:51:54  profilanswer
 

Merci bcp pour toutes ces précieuses infos... J'ai pas encore testé !

n°21772
dkomputer
Posté le 02-04-2001 à 12:59:28  profilanswer
 

URLDownloadToFile(NULL,url_char,name_to_save_char,0,NULL))
avec
#include <urlmon.h>
 
Downloads bits from the Internet and saves them to a file.
 
Syntax
 
HRESULT URLDownloadToFile(
    LPUNKNOWN pCaller,
    LPCTSTR szURL,
    LPCTSTR szFileName,
    DWORD dwReserved,
    LPBINDSTATUSCALLBACK lpfnCB
);
 
Parameters
 
pCaller  
Address of the controlling IUnknown interface of the calling ActiveX® component (if the caller is an ActiveX component). If the calling application is not an ActiveX component, this value can be set to NULL. Otherwise, the caller is a COM object that is contained in another component (such as an ActiveX control within the context of an HTML page). This parameter represents the outermost IUnknown of the calling component. The function attempts the download within the context of the ActiveX client framework and allows the caller's container to receive callbacks on the progress of the download.  
szURL  
Address of a string value containing the URL to be downloaded. This cannot be set to NULL.  
szFileName  
Addrss of a string value containing the name of the file to create for bits that come from the download.  
dwReserved  
Reserved for future use. Must be zero.  
lpfnCB  
Address of the caller's IBindStatusCallback interface. URLDownloadToFile calls this interface's IBindStatusCallback::OnProgress method on a connection activity, including the arrival of data. IBindStatusCallback::OnDataAvailable is never called. Implementing IBindStatusCallback::OnProgress allows a caller to implement a user interface or other progress monitoring functionality. It also allows the download operation to be canceled by returning E_ABORT from the IBindStatusCallback::OnProgress call. This can be set to NULL.  
Return Value
 
Returns one of the following values:
 
E_OUTOFMEMORY The buffer length is invalid or there was insufficient memory to complete the operation.  
S_OK The operation succeeded.  
 
Remarks
 
The client can choose to be notified of progress through a notification callback.
 
Function Information
 
Windows NT Use version 4.0. Implemented as ANSI and Unicode functions.  
Windows Use Windows 95 and later. Implemented as ANSI and Unicode functions.  
Header Urlmon.h  
Import Library Urlmon.lib  
Minimum availability Internet Explorer 3.0


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [Visual C++] Connexion à ne URL

 

Sujets relatifs
[PHP] Comment récupérer la chaine de l'URL ?Delphi Vs Visual Basic !!!
[Visual C++] & [MFC] : plantage de D.A.O (MSJet)[Visual C++ 6] Gestion des overflows
Doc Visual Agej'ai un probleme pour lire les bmp sous visual C++
[Visual C++] Problème avec un programme simple[Visual C++] Comment ajouter un .h au projet?
Problème de connexion à une BD Oracle 8Applet java + connexion JDBC
Plus de sujets relatifs à : [Visual C++] Connexion à ne URL


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR