我需要一个不依赖于HttpWebRequest的C#HTTP库,因为我无法从运行代码所需的环境(Unity的WebPlayer)中访问它。
理想情况下,这将是轻量级,但欢迎任何建议!
我只需要能够执行简单的HTTP GET和POST请求,但更好的REST支持会很好。
谢谢!
编辑:正如人们所指出的,HttpWebRequest不在System.Web中,但事实仍然存在 - 我无法使用它。我上面更新了我的帖子。
这篇文章 http://forum.unity3d.com/threads/24445-NotSupportedException-System.Net.WebRequest.GetCreator显示了我遇到的同样错误。
答案 0 :(得分:3)
使用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的简单类来包装此代码。
答案 1 :(得分:1)
查看System.Net.HttpWebRequest
。
它位于System.dll
。
文档: http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.aspx
HttpRequest
位于System.Web
,这可能是您的想法。
答案 2 :(得分:1)
HttpWebRequest
位于System
程序集中,而不是System.Web
中(可能您与ASP.NET中使用的HttpRequest
混淆)。它适用于所有.NET Framework版本(包括Silverlight,WP7和Client Profile)