2009-08-21 3 views
12

У меня есть старое приложение, которое использует классический прокси-сервер для взаимодействия с веб-службой Java. Некоторое время назад хост веб-службы решил потребовать, чтобы пользовательский HTTP-заголовок отправлялся с каждым запросом, чтобы получить доступ к сервису, - иначе запросы будут выброшены прямо (похоже, что это своего рода требование к маршрутизатору). Независимо от причины, по которой мне нужно ввести пользовательский HTTP-заголовок в запрос.Добавление пользовательских заголовков Http в прокси-сервер веб-службы

Есть ли способ взаимодействовать с фактическим клиентом Http, чтобы делать такие вещи, как добавлять пользовательские заголовки?

+0

я наткнулся на эту проблему, когда наши ИТ реализованы Apache mod_security, который ищет Принять заголовок, и нашел решение, принятое сверху, для работы. –

ответ

17

Вы должны быть в состоянии сделать это, переопределив метод класса proxy GetWebRequest в частичном классе в отдельном файле. После вызова метода базового класса, вы должны быть в состоянии изменить возвращаемый HttpWebRequest, как вам нравится, а затем вернуть его из метода:

public partial class MyServiceProxy { 
    protected override WebRequest GetWebRequest(Uri uri) { 
     HttpWebRequest request = (HttpWebRequest) base.GetWebRequest(uri); 
     // do what you will with request. 
     return request; 
    } 
} 
+1

Yup, что делает трюк. Я базовое генерирование прокси через код, и я смог сгенерировать класс и добавить код для добавления заголовков, добавив свойство Headers, которое проверено и использовано в GetWebRequest, чтобы добавить дополнительные заголовки. Уродливый, но он отлично работает! –

+0

спасибо за решение. Как я могу использовать этот процесс с моим клиентом проекта веб-сервиса? – Jack

+0

@Jack: это проект клиента веб-сервиса. Кроме того, вам лучше использовать WCF, если у вас есть выбор. –

Смежные вопросы