#c# #.net #web-services #iis #soap
#c# #.net #веб-сервисы #iis #soap
Вопрос:
Я пытаюсь создать приложение (или веб-сервис), размещенное в IIS 6, которое перенаправляло бы запросы SOAP другому приложению веб-служб, используя измененные учетные данные.
На данный момент у меня есть что-то вроде этого в Page_Load моего приложения:
HttpWebRequest newRequest = (HttpWebRequest)WebRequest.Create(newUrl);
newRequest.ContentType = original.ContentType;
newRequest.ContentLength = original.ContentLength;
newRequest.Method = original.HttpMethod;
newRequest.UserAgent = original.UserAgent;
newRequest.Credentials = new NetworkCredential("login","password","domain");
HttpWebResponse response = (HttpWebResponse)newRequest.GetResponse();
Проблема в том, что он вылетает в последней строке, потому что ContentLength равен > 0, и я не открываю RequestStream, потому что я не знаю, как получить его из исходного запроса.
Я не назвал этот вопрос «Как получить запрос SOAP из HttpWebRequest», потому что я считаю, что есть более простое решение для того, что я пытаюсь сделать. Может быть, какой-то механизм отправки запросов, как в Java.
Любая помощь была бы высоко оценена.
Ответ №1:
В SOAP-запросе нет ничего волшебного — в конце концов, это просто HTTP. Вы должны иметь возможность скопировать тело запроса, используя что-то вроде этого:
Context.Request.InputStream.CopyTo(newRequest.GetRequestStream());
Также вы должны убедиться, что скопировали все другие важные HTTP-заголовки, которые могли быть установлены в исходном запросе.