2015-06-25 2 views
-1

Я пытаюсь вызвать сторонний веб-сервис в службе WCF.Как использовать сторонний веб-сервис через службу Wcf SOAP без ссылки на службу

Я могу позвонить службе, добавив ссылку службы в (URL) через службу WCF, но, делая это, я слышал от людей, что это неправильный способ сделать это, когда я googled это, нашел через channelelfactory мы можем позвонить в службу.

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

может любое тело предоставить образец для вызова службы без добавления ссылки на службу. http://www.codeproject.com/Tips/558163/Difference-between-Proxy-and-Channel-Factory-in-WC

и каковы проблемы, если мы добавим ссылку на обслуживание в проекте и какие подводные камни?

Я уверен, что я должен назвать SOAP-службы только

Благодаря

ответ

2

Вы можете использовать HttpWebRequest для создания веб-запроса, а затем передать документ XML, описывающий запрос весь SOAP и получить ответ. Что-то вроде ниже кода, которое я использовал в одном из моих приложений. Я удалил несколько бит из него, которые специфичны для моего приложения, но вы получите эту идею.

public static string ProcessRequestSOAP() 
     { 
      string result = ""; 
      try 
      { 
       XmlDocument soapEnvelop = new XmlDocument(); 
       soapEnvelop.LoadXml(SOAPXML_Request); // This is the SOAP xml document that is generated when calling web service. You have to manually create this. 

       string url = webServiceURL; // External Web Service URL 
       HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url); 
       webRequest.ContentType = "text/xml;charset=\"utf-8\""; 
       webRequest.Accept = "text/xml"; 
       webRequest.Method = "POST"; 

       webRequest.Credentials = new NetworkCredential(userName,password); // Username/password to call web service if required 


       using (Stream stream = webRequest.GetRequestStream()) 
       { 
        soapEnvelop.Save(stream); 
       } 

       //get response from server 
       WebResponse response = webRequest.GetResponse(); 

       //read response stream 
       using (StreamReader reader = new StreamReader(response.GetResponseStream())) 
       { 
        if (reader != null) 
        { 
         result = System.Xml.Linq.XDocument.Load(reader).ToString(); 
        } 
        else 
        { 
         result = null; 
        } 
       } 
      } 
      catch (SoapException ex) 
      { 
       result = new ExceptionXElement(ex, false).ToString(); 
      } 
      catch (Exception ex) 
      { 
       result = new ExceptionXElement(ex, false).ToString(); 
      } 
      return result; 

     } 
+0

Слишком поздно для ответа, я пытаюсь использовать этот подход, но как развить SOAPXML_Request? не могли бы вы помочь мне на этом – Chiranjeevi

+0

@Chiranjeevi SOAPXML_Request - это всего лишь XML-документ. Это входной XML, состоящий из всего сообщения SOAP. Когда вы вызываете веб-службу из своего приложения, она генерирует XML SOAP в качестве запроса. Вы можете перехватить его с помощью таких инструментов, как Fiddler. Вам нужно построить этот XML-документ, если вы хотите использовать указанную технику. Вы можете создать его, используя обычное пространство имен XML-документов, как если бы вы генерировали какой-либо другой документ XML. – Hakunamatata

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