首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HttpWebRequest和HttpWebResponse的C++接口版本

HttpWebRequest和HttpWebResponse的C++接口版本
EN

Stack Overflow用户
提问于 2009-12-15 20:33:27
回答 3查看 11K关注 0票数 1

我们想知道如何使用HttpWebRequest和HttpWebResponse .net框架C++项目中的类是他们在c++中为webrequest类公开的任何接口,目前我们不能有一个c#项目,所以我们正在寻找替代接口。

任何帮助都将不胜感激。拉马南德。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-12-16 04:46:39

您有以下选项:

1)将托管HttpWebRequest代码写入C#文件,并将其编译为动态链接库。使用RegAsm.exe将其注册为COM对象。使用C/C++应用程序中的COM对象。

2)正如Michael上面所建议的,使用托管C++来编写代码,并与C/C++代码的其他部分进行互操作/接口。

3)不要使用托管代码!使用特定于平台的库-例如,微软的WinHTTP经过了良好的测试,并支持客户端和服务器端的操作。您也可以使用Internet Explorer使用的Wininet,但不建议在中间层方案中使用它。

因此,除非您确实需要System.Net托管代码命名空间提供的、在Wininet/WinHTTP上不可用的东西,否则我不会选择托管代码。托管代码将带来内存和cpu开销,如果您所做的全部工作都是下载网页,则这些开销实际上是不需要的。

票数 3
EN

Stack Overflow用户

发布于 2009-12-15 20:40:13

请参考这篇文章:How do you make a HTTP request with C++?

在许多帖子中都推荐使用libcurl

票数 2
EN

Stack Overflow用户

发布于 2009-12-15 20:47:15

你必须使用C++/CLI。代码片段可能如下所示。

代码语言:javascript
复制
// Open a connection
System::Net::HttpWebRequest ^_HttpWebRequest = safe_cast<System::Net::HttpWebRequest^>(System::Net::HttpWebRequest::Create(_URL));

_HttpWebRequest->AllowWriteStreamBuffering = true;

// You can specify additional header values:
_HttpWebRequest->UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)";
_HttpWebRequest->Referer = "http://www.google.com/";

// set timeout for 20 seconds (Optional)
_HttpWebRequest->Timeout = 20000;

// Request response:
System::Net::WebResponse ^_WebResponse = _HttpWebRequest->GetResponse();

// Open data stream:
System::IO::Stream ^_WebStream = _WebResponse->GetResponseStream();

// Do something with stream
_tmpImage = Image::FromStream(_WebStream);

// Cleanup
_WebResponse->Close();
_WebResponse->Close();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1907131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档