簡體   English   中英

C# 服務參考和 SOAP header

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM