2009-07-10 13 views
11

Quería desarrollar un ejemplo HTTP en la plataforma win32, que es asincrónico.Ejemplo de cliente HTTP en win32

Soy nuevo en la programación Win32, puedo saber cuáles son la plataforma API Win32 y biblioteca

prevé HTTP enviar y recibir petición.

Estoy utilizando Windows XP con VS 2005.

Si ningún ejemplo está disponible directamente en la red por favor me proporcione un enlace a ella,

con respecto Vinâyaka karjigi

+0

Este [artículo] (http://albertech.blogspot.com/2015/06/ac-c-function-hat_handles-http-get-and.html) muestra una función que maneja GET y POST. – jar

Respuesta

6

Puede utilizar la biblioteca de WinHTTP. Here es una muestra en terminación asincrónica.

+0

gracias por el enlace, me será de más uso supongo –

10

Window HTTP Services "proporciona a los desarrolladores una interfaz de programación de aplicaciones (API) cliente HTTP para enviar solicitudes a través del protocolo HTTP a otros servidores HTTP ".

HTTP Server API "permite a las aplicaciones comunicarse a través de HTTP sin necesidad de utilizar Microsoft Internet Information Server (IIS)"

+0

gracias por el enlace y la información, será más útil para mí supongo que –

2

Boost Asio es una buena biblioteca síncrona/asíncrona que tiene todo lo que necesita para servidores/clientes HTTP. Tiene algunos ejemplos extensos en servidores HTTP y los clientes relevantes. Ahora, si eres nuevo en C++ en general, esta biblioteca puede ser un poco críptica. Siempre puedes echarle un vistazo a MSDN si quieres un enfoque más desde cero.

+0

boost.asio proporciona un mecanismo para que usted pueda formular sus propias solicitudes http por mano; los servicios http de Windows encapsulan el protocolo por usted. –

3

En general, recomendaría algo multiplataforma como cURL, POCO, Qt o Asio (bastante moderno y agradable). Sin embargo, aquí es un ejemplo de Windows usando IXMLHTTPRequest:

// 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

¿Sabe qué parte del software suministra IXMLHTTPRequest como clase COM? ¿Explorador de Internet? –

+2

Creo que es parte del MSXML SDK, que parece ser una biblioteca para Windows: https://msdn.microsoft.com/en-us/library/ms753804(v=vs.85).aspx –

0

Este es un ejemplo

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

A C++ envoltorio de luz para zócalos POSIX y Winsock

Se utiliza HTTP GET para recuperar una archivo de un servidor web, tanto el servidor como el archivo son parámetros de línea de comando. El archivo remoto se guarda en una copia local.

Cuestiones relacionadas