Tom*_*mas 40 .net authentication rest wcf
正在用HttpClient详细说明构建一个休息客户端.但我无法弄清楚,也找不到任何关于如何向服务器进行身份验证的示例.我很可能会使用基本的aut,但实际上任何一个例子都会受到赞赏.
在早期版本(在线示例)中,您做到了:
HttpClient client = new HttpClient("http://localhost:8080/ProductService/");
client.TransportSettings.Credentials =
new System.Net.NetworkCredential("admin", "admin");
Run Code Online (Sandbox Code Playgroud)
但是TransportSettings,版本0.3.0中不再存在该属性.
Dun*_*art 93
所有这些都已过时.最后的方法如下:
var credentials = new NetworkCredential(userName, password);
var handler = new HttpClientHandler { Credentials = credentials };
using (var http = new HttpClient(handler))
{
// ...
}
Run Code Online (Sandbox Code Playgroud)
Dar*_*ler 17
HttpClient库没有进入.Net 4.但是可以在http://nuget.org/List/Packages/HttpClient找到它.但是,在此版本的HttpClient中,身份验证的执行方式不同.
var httpClient = new HttpClient();
httpClient.DefaultRequestHeaders.Authorization
= new AuthenticationHeaderValue("basic","...");
Run Code Online (Sandbox Code Playgroud)
要么
var webRequestHandler = new WebRequestHandler();
CredentialCache creds = new CredentialCache();
creds.Add(new Uri(serverAddress), "basic",
new NetworkCredential("user", "password"));
webRequestHandler.Credentials = creds;
var httpClient = new HttpClient(webRequestHandler);
Run Code Online (Sandbox Code Playgroud)
并且要注意,这个库将在下周更新,并且会有一些细微的变化!
我尝试了Duncan的建议,但在我的情况下没有用.我怀疑这是因为我正在集成的服务器,没有发送挑战或要求身份验证.它只是拒绝了我的请求,因为我没有提供Authorization标头.
所以我改为做了以下事情:
using (var client = new HttpClient())
{
var encoding = new ASCIIEncoding();
var authHeader = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(encoding.GetBytes(string.Format("{0}:{1}", "username", "password"))));
client.DefaultRequestHeaders.Authorization = authHeader;
// Now, the Authorization header will be sent along with every request, containing the username and password.
}
Run Code Online (Sandbox Code Playgroud)
请注意,此处的示例仅适用于基本身份验证.
| 归档时间: |
|
| 查看次数: |
45709 次 |
| 最近记录: |