2009-07-10 39 views
11

Tôi muốn phát triển một ví dụ HTTP trên nền tảng win32, không đồng bộ.Ví dụ về ứng dụng khách HTTP trên win32

Tôi mới đến lập trình win32, tôi có thể biết được những gì các api và thư viện win32 nền tảng

cung cấp cho HTTP gửi và nhận yêu cầu.

Tôi đang sử dụng Windows XP với VS 2005.

Nếu bất kỳ ví dụ là có sẵn trực tiếp trên mạng xin vui lòng cung cấp cho tôi liên kết với nó,

liên quan Vinayaka karjigi

+0

Bài viết này (http://albertech.blogspot.com/2015/06/a-c-function-that-handles-http-get-and.html) minh họa một hàm xử lý GET và POST. – jar

Trả lời

6

Bạn có thể sử dụng thư viện WinHTTP. Here là mẫu trên Hoàn thành không đồng bộ.

+0

cảm ơn cho liên kết, nó wil được sử dụng nhiều hơn với tôi tôi đoán –

10

Window HTTP Services "cung cấp các nhà phát triển với một giao diện lập trình ứng dụng khách HTTP (API) để gửi các yêu cầu thông qua giao thức HTTP tới các máy chủ HTTP khác. "

HTTP Server API "cho phép các ứng dụng để giao tiếp qua HTTP mà không cần sử dụng Microsoft Internet Information Server (IIS)"

+0

cảm ơn cho liên kết và thông tin, nó sẽ được sử dụng nhiều hơn với tôi tôi đoán –

2

Boost Asio là thư viện đồng bộ/không đồng bộ tốt đẹp có mọi thứ bạn cần cho máy chủ/máy khách HTTP. Nó có một số ví dụ mở rộng về các máy chủ HTTP và các máy khách có liên quan. Bây giờ nếu bạn mới dùng C++ nói chung thư viện này có thể hơi khó hiểu. Bạn luôn có thể xem MSDN nếu bạn muốn một cách tiếp cận từ đầu hơn.

+0

boost.asio cung cấp một cơ chế cho bạn để xây dựng yêu cầu http của riêng bạn bằng cách tay; các dịch vụ Windows http đóng gói giao thức cho bạn. –

3

Nói chung tôi khuyên bạn nên sử dụng nền tảng đa nền tảng như cURL, POCO, Qt hoặc Asio (khá hiện đại và đẹp mắt). Tuy nhiên, đây là một ví dụ Windows sử dụng 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

Bạn có biết phần mềm nào cung cấp IXMLHTTPRequest làm lớp COM không? Trình duyệt web IE? –

+2

Tôi tin rằng đó là một phần của MSXML SDK, có vẻ như là một thư viện dành cho Windows: https://msdn.microsoft.com/en-us/library/ms753804(v=vs.85).aspx –

0

Đây là một ví dụ

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

Một C++ wrapper ánh sáng cho POSIX và Winsock socket

Nó sử dụng HTTP GET để lấy một tệp từ máy chủ web, cả máy chủ và tệp đều là tham số dòng lệnh. Tệp từ xa được lưu vào một bản sao cục bộ.