Использование веб-службы с помощью POST из службы WCF - PullRequest
1 голос
/ 27 июля 2011

Так что это моя ситуация.Мне нужно использовать стороннюю веб-службу (не wcf) из другой службы WCF, которая будет служить посредником между первой службой и моим веб-приложением.Проблема почти в каждом примере, который я видел при выполнении этого, требует добавления ссылки на Web / Service в приложение для генерации прокси, но я не могу добавить ссылку, она возвращает ошибку, возможно, из-за некоторой необходимой аутентификации,

Эта услуга может быть использована только GET или POST.Мне удалось использовать службу как GET, так и POST из ajax-вызова с jquery на веб-странице, но я не знаю, как использовать службу из службы wcf в c #.

ПримерGET-запрос от службы:

http://webservice.server.com/services/myservice?user=[username]&password=[password]&value1=[somevalue]&value2=[anothervalue]

Ответ представляет собой xml с кодом состояния операции и сообщением о состоянии, которое я затем продолжаю сохранять в базе данных.

Как мне это сделать?

Спасибо за любую помощь ...

РЕШЕНИЕ

Спасибо Шону за то, что он указал мнеправильное направление.Как я это сделал:

Справочная статья: Как использовать HttpWebRequest для отправки POST-запроса на другой веб-сервер

ASCIIEncoding encoding = new ASCIIEncoding();
string postData = "username=" + username;
postData += ("&password=" + password);
postData += ("&value1=" + val1);
postData += ("&value2=" + val2);
byte[] data = encoding.GetBytes(postData);

// Prepare POST web request...
HttpWebRequest myRequest =
  (HttpWebRequest)WebRequest.Create(new Uri("http://webservice.server.com/services/myservice"));
myRequest.Method = "POST";
myRequest.ContentType = "application/x-www-form-urlencoded";
myRequest.ContentLength = data.Length;
Stream newStream = myRequest.GetRequestStream();
// Send the data.
newStream.Write(data, 0, data.Length);
newStream.Close();

// Get response  
using (HttpWebResponse response = myRequest.GetResponse() as HttpWebResponse)
{
    // Get the response stream  
    StreamReader reader = new StreamReader(response.GetResponseStream());

    // Read the whole contents and return as a string  
    result = reader.ReadToEnd();
}

XDocument doc = XDocument.Parse(result);

// Read XML

Пожалуйста, если у вас есть какие-либо комментарии к моему решению, возражения или улучшения, все комментарии приветствуются.

Ответы [ 2 ]

1 голос
/ 27 июля 2011

Если вы не можете добавить ссылку на веб-сервис (я бы хотел выяснить, почему вы не можете сделать это в первую очередь), я боюсь, вам придется делать это вручную, отправляя HTTP-запрос вручную, используя класс WebClient WebClient или класс HttpReqest, как предлагает Шон

1 голос
/ 27 июля 2011

Думаю, вы захотите взглянуть на класс HttpRequest:

http://msdn.microsoft.com/en-us/library/system.web.httprequest.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...