我在 silverlight 中发出 HttpWebRequest 并尝试读取(除其他外)响应中的标头。不幸的是,虽然我可以获得响应对象 (HttpWebResponse),但任何访问 Headers 集合的尝试都会导致“未实现”异常。关于如何做到这一点的任何想法?我正在尝试从 azure(约 8k 行)中提取一个大型记录集,并且需要检查响应标头中是否有延续令牌。
4 回答
感谢@silverfighter,我有答案了。诀窍是告诉 SilverLight 3 让客户端 (.NET) 处理调用而不是浏览器(默认设置)。完成此操作后,您可以通过 WebClient 和 HttWebRequest 方法访问响应标头。更多信息在这里:
http://blogs.msdn.com/carlosfigueira/archive/2009/08/15/fault-support-in-silverlight-3.aspx http://msdn.microsoft.com/en-us/library/dd470096(VS .95).aspx http://blogs.msdn.com/silverlight_sdk/archive/2009/08/12/new-networking-stack-in-silverlight-3.aspx
HttpWebRequest 不允许访问响应标头集合。请改用 WebClient,它公开了WebResponse.Headers 属性。
不幸的是,虽然该属性存在,但它同样返回未实现的异常。
我很难相信这看起来很困难......我想很多人都有相同的要求。
浏览器 Http 处理不支持响应标头。您必须在调用 HttpHandler 之前指定客户端 Http 处理:
bool httpResult = WebRequest.RegisterPrefix("http://", WebRequestCreator.ClientHttp);
WebClient wc = new WebClient();
wc.OpenReadCompleted += new OpenReadCompletedEventHandler(wc_OpenReadCompleted);
wc.OpenReadAsync(...);
结果头现在将在 wc_OpenReadCompleted 方法中的 webClient 对象上可用。看看: http: //msdn.microsoft.com/en-us/library/dd920295 (v=vs.95).aspx