2009-07-10 4 views
11

Ich wollte ein HTTP-Beispiel auf Win32-Plattform, die asynchron ist, entwickeln.HTTP-Client-Beispiel auf win32

Ich bin neu in win32-Programmierung, kann ich wissen, was sind die api und Bibliothek win32 Plattform

für HTTP-Anforderung senden und empfangen zur Verfügung stellt.

Ich verwende Windows XP mit VS 2005.

Wenn irgendein Beispiel direkt auf Netz verfügbar ist mir es bitte geben Sie verknüpfen,

hinsichtlich Vinayaka karjigi

+0

Dieser [article] (http://albertech.blogspot.com/2015/06/a-c-function-that-handles-http-get-and.html) demonstriert eine Funktion, die GET und POST behandelt. – jar

Antwort

6

Sie WinHTTP Bibliothek verwenden können. Here ist ein Beispiel für die asynchrone Beendigung.

+0

danke für den Link, es wird von mehr Nutzen für mich sein, ich denke, –

10

Window HTTP Services „bietet Entwicklern eine HTTP-Client-Anwendungsprogrammierschnittstelle (API) zum Senden von Anforderungen über das HTTP-Protokoll an andere HTTP-Server. "

HTTP Server API "ermöglicht es Anwendungen, HTTP zu kommunizieren ohne Verwendung von Microsoft Internet Information Server (IIS)"

+0

danke für den Link und Informationen, es wird von mehr Nutzen für mich sein, ich denke, –

2

Boost Asio ist eine nette synchrone/asynchrone Bibliothek, die alles hat, was Sie für HTTP-Server/Clients benötigen. Es gibt einige ausführliche Beispiele zu HTTP-Servern und den relevanten Clients. Nun, wenn Sie neu in C++ im Allgemeinen sind, kann diese Bibliothek ein wenig kryptisch sein. Sie können immer einen Blick auf MSDN werfen, wenn Sie einen Ansatz von Anfang an möchten.

+0

boost.asio bietet einen Mechanismus für Sie Ihre eigenen HTTP-Anfragen von Hand; Die Windows http-Dienste kapseln das Protokoll für Sie ein. –

3

Generell würde ich etwas Cross-Plattform wie cURL, POCO, Qt oder Asio (ziemlich modern und nett) empfehlen. Doch hier ist ein Beispiel für Windows IXMLHTTPRequest mit:

// TODO: error handling 

#include <atlbase.h> 
#include <msxml6.h> 

HRESULT hr; 
CComPtr<IXMLHTTPRequest> request; 

hr = request.CoCreateInstance(CLSID_XMLHTTP60); 
hr = request->open(
    _bstr_t("GET"), 
    _bstr_t("https://www.google.com/images/srpr/logo11w.png"), 
    _variant_t(VARIANT_FALSE), 
    _variant_t(), 
    _variant_t()); 
hr = request->send(_variant_t()); 

// get status - 200 if succuss 
long status; 
hr = request->get_status(&status); 

// load image data (if url points to an image) 
VARIANT responseVariant; 
hr = request->get_responseStream(&responseVariant); 
IStream* stream = (IStream*)responseVariant.punkVal; 
CImage image = new CImage(); 
image->Load(stream); 
stream->Release(); 
+1

Wissen Sie, welche Software IXMLHTTPRequest als COM-Klasse liefert? Internet Explorer? –

+2

Ich glaube, dass es Teil des MSXML SDK ist, das eine Bibliothek für Windows zu sein scheint: https://msdn.microsoft.com/en-us/library/ms753804(v=vs.85).aspx –

0

Dies ist ein Beispiel

https://github.com/pedro-vicente/lib_netsockets

A C++ Licht Wrapper für POSIX und Winsock-Sockets

Es verwendet HTTP GET auf eine abrufen Datei von einem Webserver, sowohl Server als auch Datei sind Befehlszeilenparameter. Die Remote-Datei wird in einer lokalen Kopie gespeichert.