C# 不使用';不依赖于HttpWebRequest
我需要一个不依赖HttpWebRequest的C#HTTP库,因为我无法从运行代码所需的环境(Unity的WebPlayer)中访问它 理想情况下,这将是重量轻,但任何建议都是欢迎的 我只需要能够执行简单的HTTPGET和POST请求,但是更好的REST支持就好了 谢谢 编辑:正如人们指出的,HttpWebRequest不在System.Web中,但事实仍然存在——我不能使用它。我已经更新了上面的帖子 本帖C# 不使用';不依赖于HttpWebRequest,c#,http,httpwebrequest,unity3d,C#,Http,Httpwebrequest,Unity3d,我需要一个不依赖HttpWebRequest的C#HTTP库,因为我无法从运行代码所需的环境(Unity的WebPlayer)中访问它 理想情况下,这将是重量轻,但任何建议都是欢迎的 我只需要能够执行简单的HTTPGET和POST请求,但是更好的REST支持就好了 谢谢 编辑:正如人们指出的,HttpWebRequest不在System.Web中,但事实仍然存在——我不能使用它。我已经更新了上面的帖子 本帖 显示了我收到的相同错误。查看System.Net.HttpWebRequest 它位于S
显示了我收到的相同错误。查看
System.Net.HttpWebRequest
它位于System.dll
中
文档:
HttpRequest
位于System.Web
,这可能就是您所想的。HttpWebRequest
位于System
程序集中,而不是System.Web
(可能您混淆了ASP.NET中使用的HttpRequest
)。它在所有.NET Framework版本中都可用(包括Silverlight、WP7和客户端配置文件)使用套接字实现您自己的简单HTTP客户端并不那么困难
只需使用TcpClient()
对于协议本身,请下拉到每个请求的连接范例。典型的GET请求如下所示:
GET /url HTTP/1.1
Host: <hostname-of-server>
Connection: close
请注意,您需要用一个简单的类来包装这段代码,该类提供类似HTTPWebRequest的语义。您是对的,但我仍然不能使用HTTPWebRequest。我已经编辑了这个问题。你是对的,但我仍然不能使用HttpWebRequest。我已经编辑了这个问题。@eAi,你看过那篇文章的答案了吗?“解决这个问题的唯一方法是以某种方式使用UnityEngine.WWW类,而不是System.Net.WebClient”dreamora在下面的两篇文章中说:“在webplayer上,由于Unity 3中的跨域安全原因,它根本不受支持,这不是一个bug。如果你想请求,你必须使用WWW或自己在TCP客户端/TCP套接字上实现它。”。第二种选择就是我所寻找的——如果是这样的话,我将自己实现它,但我相信其他人以前也做过。@eAi,我以前从未做过,但祝你好运。然而,这听起来与原来的问题大不相同。我认为,如果您打开另一个问题,专门针对使用UnityIt的仍然是普通的C#代码的HTTP请求“实现TCP客户端/TCP套接字”,您将更有可能找到答案—Unity纯粹限制了我们可以使用的标准库。我现在主要实现了自己的HTTP代码,所以可能就是这样。如果有必要,我会提出一个新问题!是的,基本上我就是这么做的。奇怪的是,没有人写过这样的图书馆。对于基本情况来说很简单,但对于多部分MIME等来说会变得更复杂。
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
}