【问题标题】:Silverlight 4 WebClient, unable to set HttpRequestHeader.ContentType to application/jsonSilverlight 4 WebClient,无法将 HttpRequestHeader.ContentType 设置为 application/json
【发布时间】:2011-01-03 02:11:13
【问题描述】:

我已经为此苦苦挣扎了太久,所以我决定发布这个问题。

我有一个 MVC 3 RC2 站点,它托管 WCF 零配置端点、网站本身和 SL 4 应用程序。当 SL 应用程序使用 WeClient 对象从端点拉下数据时,数据将以 xml 形式返回(除非另有说明,否则为默认值)当我尝试使用此 sn-p 更改标头时

        var client = new WebClient();
        var uri = new Uri("http://example.com/Services/GetFoodDescriptionsLookup(2100)");


        // A WebClient instance does not send optional HTTP headers by default. 
        // If your request requires an optional header, 
        // you must add the header to the Headers collection.

        // http://msdn.microsoft.com/en-us/library/system.net.webheadercollection.aspx

        // WRONG
        client.Headers[HttpRequestHeader.ContentType] = "application/json";

        // RIGHT
        client.Headers[HttpRequestHeader.Accept] = "application/json";

        client.DownloadProgressChanged += (o, e) =>
            {
                Status = String.Format("BytesReceived : {0}", e.BytesReceived);
            };

        client.DownloadStringCompleted += (o, e) =>
            {
                Status = "Downloading...Done.";
                Result = e.Result;
            };

        client.DownloadStringAsync(uri);

我收到“由于对象的当前状态,操作无效。” ,如果我删除它,调用成功但返回为 xml。

我的问题的本质是“如何将内容类型更改为 application/json 以便 wcf 服务可以返回 JSON”?端点可以使用,因为我可以使用 jQuery 在 Web 浏览器中提取正确的格式。

谢谢你, 斯蒂芬

编辑

我从 Glenn Block 那里得知我做错了,无论是在这个例子中,还是在这个带有 HttpWebRequest 类的例子中 How do I use HttpWebRequest GET method w/ ContentType="application/json" 内容类型用于指示您计划发送到服务器的内容, 接受是你期望得到的结果。

【问题讨论】:

    标签: asp.net-mvc silverlight wcf


    【解决方案1】:

    使用 WebRequest 代替 WebClient。

    WebRequest 有一个 ContentType 属性,可用于设置内容类型。

    【讨论】:

    • Michael,所以你告诉我不能以这种方式使用 WebClient?
    • 正确,请参阅 WebHeaderCollection 类的文档:msdn.microsoft.com/en-us/library/…
    • 谢谢迈克尔!不敢相信我错过了底部的那部分,你知道标题为“受限标题”的部分。在我发布之前必须阅读该页面 3 次... 谜团解决了,谢谢。
    猜你喜欢
    • 2021-01-04
    • 1970-01-01
    • 2011-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-11
    • 1970-01-01
    相关资源
    最近更新 更多