[英]C# service reference and SOAP header
在我的程序中,我引用了一個網絡服務。 但是,此 Web 服務需要身份驗證:
<headers>
<Security xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<UsernameToken>
<Username>{username}</Username>
<Password>{password}</Password>
</UsernameToken>
</Security>
</headers>
如何在我的程序中添加這種身份驗證,請求網絡服務?
像下面這樣的東西似乎不起作用:
client.ClientCredentials.UserName.UserName = "username";
client.ClientCredentials.UserName.Password = "password";
我想避免在我的 app.config 中放一些東西:
<headers>
<Security xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<UsernameToken>
<Username>{username}</Username>
<Password>{password}</Password>
</UsernameToken>
</Security>
</headers>
這是有效的,但不是我想要的方式。
試試看
public async Task<string> HttpClientAsync(string url , string json, string token)
{
try
{
var JsonData = new StringContent(json, Encoding.UTF8, "text/xml");
var handler = new HttpClientHandler();
handler.ClientCertificateOptions = ClientCertificateOption.Manual;
handler.ServerCertificateCustomValidationCallback =
(httpRequestMessage, cert, cetChain, policyErrors) =>
{
return true;
};
using (var client = new HttpClient(handler))
{
// System.Net.ServicePointManager.SecurityProtocol |= SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", token);
client.DefaultRequestHeaders.Add("SOAPAction", "");
var result = await client.PostAsync(url, JsonData);
string resultContent = await result.Content.ReadAsStringAsync();
return resultContent;
}
}
catch (Exception e)
{
return e.Message;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.