在Silverlight中使用HttpRequest对象时可以设置http标头吗?

时间:2010-02-16 11:59:12

标签: silverlight http silverlight-3.0 http-headers httprequest

从Silverlight 3.0进行HttpRequest时,我在设置任何HTTP标头值时遇到问题?

Silverlight 3.0中是否支持HTTP标头?

以下代码在调用请求回调时抛出异常:

        var url = new Uri("http://lonmw32795/RBSM_Portal_RESTfulWebService/HostInterrogationService.svc/host/environment");
        req = (HttpWebRequest)WebRequest.Create(url);
        req.Headers[HttpRequestHeader.Pragma] = "no-cache";
        req.Method = "GET";

        req.BeginGetResponse(new AsyncCallback(WebComplete), req);    

异常类型是System.NotSupportedException - WTF!

有人有任何想法吗?

干杯

AWC

2 个答案:

答案 0 :(得分:2)

请注意WebHeaderCollection的文档,大多数有用的标题都是受限制的,它不会列出编译指示,但它也说限制标题不限于提供的列表。

这些限制已经到位,因为底层浏览器通常会处理http请求,因此它会使用自己的算法来控制这些标头。

可以使用ClientHttp执行此操作: -

    var url = new Uri("http://lonmw32795/RBSM_Portal_RESTfulWebService/HostInterrogationService.svc/host/environment");
    req = (HttpWebRequest)WebRequestCreator.ClientHttp.Create(url);

请注意,您需要手动管理所需的任何Cookie,如果将Cookie设置为对使用BrowserHttp的请求的响应的一部分,则可能会有点棘手。

答案 1 :(得分:0)

简单的答案是肯定不是 - 如果你想创建一个HttpRequest,你必须使用WebRequestCreator类。

查看this博文,了解更多信息。