visual-c++ wininet

visual c++ - cómo construir el método HttpSendRequest de WININET



visual-c++ (1)

Tengo un servicio web ficticio con URI = http: //localhost/IO_100_Service.svc/xml? Id = {id} que devuelve datos en formato XML. Quiero llamar a este servicio utilizando WINInet APi en VC ++. ¿Alguien me puede ayudar a usarlo? construir el método "HttpSendRequest" para agregar encabezado y datos para llamar a este servicio.


Aquí hay un código de muestra que debería poder modificar según sus necesidades. Lo probé con VS2005 usando un proyecto de plantilla de línea de comando.

#include <tchar.h> #include <wininet.h> /// .... HINTERNET hIntSession = ::InternetOpen(_T("MyApp"), INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0); HINTERNET hHttpSession = InternetConnect(hIntSession, _T("api.twitter.com"), 80, 0, 0, INTERNET_SERVICE_HTTP, 0, NULL); HINTERNET hHttpRequest = HttpOpenRequest( hHttpSession, _T("GET"), _T("1/statuses/user_timeline.xml?screen_name=twitterapi"), 0, 0, 0, INTERNET_FLAG_RELOAD, 0); TCHAR* szHeaders = _T("Content-Type: text/html/nMySpecialHeder: whatever"); CHAR szReq[1024] = ""; if( !HttpSendRequest(hHttpRequest, szHeaders, _tcslen(szHeaders), szReq, strlen(szReq))) { DWORD dwErr = GetLastError(); /// handle error } CHAR szBuffer[1025]; DWORD dwRead=0; while(::InternetReadFile(hHttpRequest, szBuffer, sizeof(szBuffer)-1, &dwRead) && dwRead) { szBuffer[dwRead] = 0; OutputDebugStringA(szBuffer); dwRead=0; } ::InternetCloseHandle(hHttpRequest); ::InternetCloseHandle(hHttpSession); ::InternetCloseHandle(hIntSession);