Как добавить пользовательский Заголовок Http для Клиента веб-сервиса C#, использующего Ось 1,4 веб-сервиса

Пожалуйста, выполните следующие действия:

  1. c: \ mysql \ bin> mysqld --install
  2. c: \ mysql \ bin> mysqld --initialize

, затем нажмите « Windows key + R » write « services.msc », запустите от имени admin

, чтобы запустить службу MySQL. .

48
задан John Saunders 28 June 2012 в 18:55
поделиться

4 ответа

Если вы хотите отправить собственный HTTP-заголовок (не SOAP-заголовок), вам нужно использовать класс HttpWebRequest, код будет выглядеть так:

HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url);
webRequest.Headers.Add("Authorization", token);

Нельзя добавлять заголовки HTTP с помощью визуального прокси, созданный студией, что может быть настоящей проблемой.

7
ответ дан 26 November 2019 в 18:45
поделиться

Мы говорим о WCF? У меня были проблемы, когда при вызовах служб не добавлялись заголовки авторизации http, и включение любых вызовов в этот оператор устранило мою проблему.

  using (OperationContextScope scope = new OperationContextScope(RefundClient.InnerChannel))
  {
            var httpRequestProperty = new HttpRequestMessageProperty();
            httpRequestProperty.Headers[System.Net.HttpRequestHeader.Authorization] = "Basic " +
            Convert.ToBase64String(Encoding.ASCII.GetBytes(RefundClient.ClientCredentials.UserName.UserName + ":" +
            RefundClient.ClientCredentials.UserName.Password));
            OperationContext.Current.OutgoingMessageProperties[HttpRequestMessageProperty.Name] = httpRequestProperty;

            PaymentResponse = RefundClient.Payment(PaymentRequest);
   }

Это выполняло вызовы SOAP к IBM ESB через .NET с базовой аутентификацией через http или https.

Надеюсь, это кому-то поможет, потому что у меня были серьезные проблемы с поиском решения в Интернете.

25
ответ дан 26 November 2019 в 18:45
поделиться

Похоже, первоначальный автор нашел свое решение, но для всех, кто хочет добавить настоящие пользовательские заголовки, если у вас есть доступ к изменению сгенерированных Код протокола, который вы можете переопределить GetWebRequest :

protected override System.Net.WebRequest GetWebRequest(Uri uri)
{
  System.Net.WebRequest request = base.GetWebRequest(uri);
  request.Headers.Add("myheader", "myheader_value");
  return request;
}

Убедитесь, что вы удалили атрибут DebuggerStepThroughAttribute , если хотите войти в него.

48
ответ дан 26 November 2019 в 18:45
поделиться

Я нашел этот код и решил проблему.

http://arcware.net/setting-http-header-authorization-for-web-services/

protected override WebRequest GetWebRequest(Uri uri)
{
    // Assuming authValue is set from somewhere, such as the config file
    HttpWebRequest request = (HttpWebRequest)base.GetWebRequest(uri);
    request.Headers.Add("Authorization", string.Format("Basic {0}", authValue));
    return request;
}
5
ответ дан 26 November 2019 в 18:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: