Functii cURL/WinINet in Visual C++ 2010

Intrebari despre programarea cu VC++ incluzand mediul de dezvoltare, instalare, setari, debugger, compilator, linker si documentatie.
Post Reply
User avatar
curiosul
Junior
Junior
Posts: 46
Joined: 18 Aug 2010, 20:20
Judet: Iaşi
Contact:

Functii cURL/WinINet in Visual C++ 2010

Post by curiosul » 15 Feb 2012, 18:25

As-i avea si eu nevoie de niste tutoriale, carti, exemple, video-uri, orice care ma ajute sa invat cat de cat, sa folosesc cURL, sa stiu ce are la baza!
Nu vreau cine stie ce chestii, vreau sa stiu spre exemplu sa navighez pe o pagina, sa copii un text din ea, chesii din astea simple!
Am cautat pe net ceva tutoriale da nu prea am gasit nimic mai ales functia din c++!
Multumesc.
Last edited by curiosul on 24 Feb 2012, 01:46, edited 1 time in total.


Cea mai buna batalie este cea castigata fara lupta.

User avatar
bu7ch3r
Membru++
Membru++
Posts: 326
Joined: 17 May 2011, 15:17
Judet: Iaşi
Location: Sofia
Contact:

Re: Functii cURL in Visual C++ 2010

Post by bu7ch3r » 15 Feb 2012, 18:41

Pana sa fii scris tu acest post credeam ca CURL e doar pentru php. Exista intr-adevar o librarie pentru windows dar...

Eu personal am folosit CURL doar in php, am avut putine probleme in initializarea sa si face ceea ce vrei tu sa faca, garantat.

Ma indoiesc ca e la fel de usor de folosit CURL ca in php.

Ai la dispozitie exemple si functii din WINAPI, cum ar fi cele din WinHTTP si WinInet, eu le-am folosit fara nici o problema pe ambele.
http://msdn.microsoft.com/en-us/library ... s.85).aspx
E greu pana te obisnuiest cum sa le folosesti, pentru ca trebuie sa apelezi cateva functii intr-o ordine precisa si logica, dar e plin netul de exemple.

Poti sa folosesti MFC-ul si faci un obiect CHtmlCtrl care face singur navigatia si chiar ti-o randeaza:)
http://msdn.microsoft.com/en-us/library ... s.80).aspx

Si bineinteles mai ai COM :)
Cu stima,
Lupu Claudiu

neagu_laurentiu
Membru++
Membru++
Posts: 919
Joined: 23 Jul 2007, 11:32

Re: Functii cURL in Visual C++ 2010

Post by neagu_laurentiu » 15 Feb 2012, 21:56

Daca stii sa citesti din engleza plus limbajul, nu-ti trebuie nimic altceva decat:
http://curl.haxx.se/libcurl/c/example.html

User avatar
curiosul
Junior
Junior
Posts: 46
Joined: 18 Aug 2010, 20:20
Judet: Iaşi
Contact:

Re: Functii cURL in Visual C++ 2010

Post by curiosul » 23 Feb 2012, 00:27

Am incercat ceva cu cURL dar nu prea a iesit si pe deasupra a zis si bu7ch3r ca este destul de costisitor asa ca voi incerca sa vad cum sta treaba cu functiile WinINet.
Dar pentru inceput as vrea sa stabilesc niste nelamuriri:
1.Ce tip de proiect trebuie sa creez pentru ca intr-unul obisnuit nu vrea in nici-un caz sa ruleze. Si cum pot sa-mi dau singur seama pe viitor?
2.Toate functiile sunt de genul:

Code: Select all

GROUPID CreateUrlCacheGroup(
  __in        DWORD dwFlags,
  __reserved  LPVOID lpReserved
);
Imi puteti da un exemplu de program cap-coada care sa foloseasca una din functiile WinINet, nu conteaza care!

PS: Folosesc Visual c++ 2010 Express Edition
Cea mai buna batalie este cea castigata fara lupta.

User avatar
cristianamarie
Membru++
Membru++
Posts: 480
Joined: 12 Mar 2009, 18:47
Judet: Iaşi
Location: Iasi

Re: Functii cURL in Visual C++ 2010

Post by cristianamarie » 23 Feb 2012, 09:44

Nuclear launch detected

User avatar
Ovidiu Cucu
Fondator
Fondator
Posts: 3778
Joined: 11 Jul 2007, 16:10
Judet: Iaşi
Location: Iasi
Contact:

Re: Functii cURL in Visual C++ 2010

Post by Ovidiu Cucu » 23 Feb 2012, 11:02

curiosul wrote:2.Toate functiile sunt de genul:

Code: Select all

GROUPID CreateUrlCacheGroup(
  __in        DWORD dwFlags,
  __reserved  LPVOID lpReserved
);
Cui ti-a zis porumbelul asta, spune-i sa traga un ochi mai atent la docomentatie. ;)

In fine, uite un exemplu simplu-simplu-simplificat care "ruleaza intr-o aplicatie obisnuita" (presupun ca te refereai la o aplicatie consola).

Code: Select all

#include <Windows.h>
#include <TCHAR.h>
#include <WinINet.h>  // Include WinINet SDK header
#include <stdio.h>

#pragma comment(lib, "WinINet.lib") // link to WinINet library

DWORD _HandleError(LPCTSTR pszFunction);

int main()
{  
   // open internet session
   HINTERNET hSession = ::InternetOpen(NULL, INTERNET_OPEN_TYPE_DIRECT, NULL, 0, 0);
   if(NULL == hSession)
   {
      return _HandleError(_T("InternetOpen"));
   }

   // open URL resource
   LPCTSTR pszUrl = _T("http://www.codexpert.ro/");
   HINTERNET hRes = ::InternetOpenUrl(hSession, pszUrl, NULL, 0, 0, NULL);
   if(NULL == hRes)
   {
      DWORD dwError = _HandleError(_T("InternetOpenUrl"));
      ::InternetCloseHandle(hSession);
      return dwError;
   }

   // read data
   // Note: This is just a simplified example for demo purpose and may read truncated data.
   // For more info, see InternetReadFile documentation.   
   const DWORD dwBytesToRead = 4096; 
   DWORD dwBytesRead = 0;
   char lpBuffer[dwBytesToRead];

   BOOL bRet = ::InternetReadFile(hRes, lpBuffer, dwBytesToRead, &dwBytesRead);
   if(! bRet)
   {
      ::InternetCloseHandle(hRes);
      ::InternetCloseHandle(hSession);
      return _HandleError(_T("InternetReadFile"));
   }

   if(dwBytesRead < dwBytesToRead)
      lpBuffer[dwBytesRead] = 0;
   else
      lpBuffer[dwBytesToRead - 1] = 0;

   // print read data
   printf(lpBuffer);

   ::InternetCloseHandle(hRes);
   ::InternetCloseHandle(hSession);

   system("pause");
   return 0;
}

DWORD _HandleError(LPCTSTR pszFunction)
{
   DWORD dwError = ::GetLastError();
   _tprintf(_T("%s failed\nError: %u"), pszFunction, dwError);
   return dwError;
}
Domeniul e destul de vast, asa ca pentru a face exact ce vrei tu ai de sapat putin prin documentatie (MSDN, Dev Center, etc) unde gasesti si ceva exemple.
Poti porni voiniceste de la: Dev Center - Windows Internet

Post Reply