WebClient 未向 Windows Phone 中的 Web 服务发送授权标头
Posted
技术标签:
【中文标题】WebClient 未向 Windows Phone 中的 Web 服务发送授权标头【英文标题】:WebClient not sending Authorization Header to Web Service in Windows Phone 【发布时间】:2014-05-22 23:58:51 【问题描述】:这是在 Windows Phone 上使用 WebClient 的情况。 我能够将数据拉取并推送到使用 asp.net Web Api 托管的 Web 服务。 现在,我在 Web 服务和 Windows Phone 代码上启用了基本身份验证,将标头添加到 WebClient。 我注意到授权标头没有到达 Web 服务,因此 Web 服务抛出了错误的请求。 已搜索 *** 和博客,但无法获取授权标头以使 Web 服务正常工作。 关于上述问题的一些方向将有很大帮助。
【问题讨论】:
看看这个问题:- not return correct post method result 我想你也有同样的问题,尽管你必须给我们更多的信息。 【参考方案1】:由于某种原因,webclient 没有发送授权标头。
我从我的网络中询问了一位 windows phone 冠军。他建议安装 nuget 包 HttpClient。并使用 HttpClient 而不是 WebClient。这个 HttpClient 即使在 wp7 上也支持异步和等待。可以让它轻松工作。
nuget package for httpclient
示例代码:
string api = "/api/example/?id=abc";
var client = new HttpClient();
client.BaseAddress = new Uri("http://localhost:0000/");
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue
("Basic", Convert.ToBase64String
(
new Helpers().StringToAscii(Username, Password)
)
);
var resultString = await client.GetStringAsync(api);
希望这会有所帮助。
【讨论】:
以上是关于WebClient 未向 Windows Phone 中的 Web 服务发送授权标头的主要内容,如果未能解决你的问题,请参考以下文章
使用 WebClient 从 Windows 服务访问网络共享
System.Net.WebClient 不适用于 Windows 身份验证
WebClient 请求期间发生异常。在 Windows 手机中