如何为.NET Compact Framework设置useUnsafeHeaderParsing

时间:2011-01-27 01:13:23

标签: compact-framework httpwebrequest windows-ce

在我的Windows CE 6.0应用程序中,我正在与一个返回错误标题信息的专有Web服务器设备进行通信(更具体地说,它返回NO标头信息)。

我认为缺少标头信息是我的HttpWebRequest方法无法正常工作的原因。

我记得.NET“常规”框架允许我们以编程方式配置System.Net.Configuration程序集以允许无效的标头(useUnsafeHeaderParsing)。

不幸的是,对我来说,System.Net.Configuration程序集不包含在Compact Framework中。

CF中是否有类似的配置,允许我们以编程方式允许无效的标题?

1 个答案:

答案 0 :(得分:7)

我无法找到设置UseUnsafeHeaderParsing的解决方法。我决定删除HttpWebRequest类的实现,而是使用TcpClient。使用TcpClient类将忽略HTTP标头可能存在的任何问题--TcpClient甚至不会考虑这些术语。

无论如何,使用TcpClient我能够从原始帖子中提到的专有Web服务器获取数据(包括HTTP Headers)。

对于记录,以下是如何通过TcpClient从Web服务器检索数据的示例:

下面的代码实际上是将客户端HTTP Header数据包发送到Web服务器。

static string GetUrl(string hostAddress, int hostPort, string pathAndQueryString)
{
string response = string.Empty;

//Get the stream that will be used to send/receive data
TcpClient socket = new TcpClient();
socket.Connect(hostAddress, hostPort);
NetworkStream ns = socket.GetStream();    

//Write the HTTP Header info to the stream
StreamWriter sw = new StreamWriter(ns);
sw.WriteLine(string.Format("GET /{0} HTTP/1.1", pathAndQueryString));
sw.Flush();

//Save the data that lives in the stream (Ha! sounds like an activist!)
string packet = string.Empty;
StreamReader sr = new StreamReader(ns);
do
{
packet = sr.ReadLine();
response += packet;
}
while (packet != null);

socket.Close();

return (response);
}