不依赖于HttpWebRequest的HTTP库

本文关键字:HTTP HttpWebRequest 依赖于 | 更新日期: 2023-09-27 17:49:30

我需要一个不依赖于HttpWebRequest的c# HTTP库,因为我不能从我需要运行我的代码(Unity的WebPlayer)的环境中访问它。

理想情况下,这将是轻量级的,但欢迎任何建议!

我只需要能够做简单的HTTP GET和POST请求,但更好的REST支持将是好的。

谢谢!

Edit:正如人们所指出的,HttpWebRequest不在系统中。但事实是——我不会用它。我已经更新了我上面的帖子。

这篇文章http://forum.unity3d.com/threads/24445-NotSupportedException-System.Net.WebRequest.GetCreator显示了相同的错误。

不依赖于HttpWebRequest的HTTP库

使用Socket实现自己的简单HTTP客户端并不那么困难。

只使用TcpClient()。

对于协议本身,下拉到每个请求连接范式。典型的GET请求如下所示:

GET /url HTTP/1.1
Host: <hostname-of-server>
Connection: close

对于代码本身(来自内存)

TcpClient client = new TcpClient();
IPEndPoint target = ... // get an endpoint for the target using DNS class
client.Connect(target);
using(NetworkStream stream = client.GetStream())
{
// send the request.
string request = "GET /url HTTP/1.1'r'nConnection: close'r'n'r'n";
stream.Write(Encoding.ASCII.GetBytes(request));
// then drain the stream to get the server response
}

请注意,您需要用一个简单的类来包装这些代码,该类提供类似HTTPWebRequest的语义。

System.Net.HttpWebRequest

System.dll

文档: http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.aspx

HttpRequest位于System.Web中,这可能就是您所想的。

HttpWebRequest是在System程序集中,而不是在System.Web(也许你混淆了在ASP.NET中使用的HttpRequest)。它可以在所有。net框架版本(包括Silverlight、WP7和Client Profile)中使用