2011-07-07 36 views

回答

0

您可以使用HttpWebRequest調用該服務。示例如下: -

private static XDocument CallSoapServiceInternal(string uri, string soapAction, string contentType, XDocument reqXml) 
{ 
    var req = (HttpWebRequest)WebRequest.Create(uri); 
    req.ContentType = contentType; 
    req.Method = "POST"; 
    req.Headers.Add("SOAPAction", soapAction); 
    req.Credentials = CredentialCache.DefaultCredentials; 
    req.Timeout = 20000; 
    //req.Timeout = System.Threading.Timeout.Infinite; 

    using (var reqStream = req.GetRequestStream()) 
    { 
     reqXml.Save(reqStream); 
    } 

    string respStr; 

    try 
    { 
     using (var resp = (HttpWebResponse)req.GetResponse()) 
     { 
      using (var rdr = new StreamReader(resp.GetResponseStream())) 
      { 
       respStr = rdr.ReadToEnd(); 
      } 
     } 
    } 
    catch (Exception ex) 
    { 
     throw new Exception("Error getting service response.", ex); 
    } 

    Console.WriteLine(respStr); 
    Assert.IsTrue(respStr.Length > 0, "Nothing returned"); 

    var respXml = XDocument.Parse(respStr); 
    return respXml; 
} 
+0

謝謝你。這就是我要找的。 – VJAI

+0

System.ServiceModel是否有相當容易地構造/發送Soap消息的類? – VJAI

+0

發現此問題。使用SoapSender和SoapReceiver類發送和接收SOAP消息http://msdn.microsoft.com/en-us/library/ms824662.aspx – VJAI

0

簡要回答:沒有

WCF是基於具有客戶端和服務之間的代理的非常基本原則被調用。你不能「解決」這個問題。

您可以選擇使用添加服務引用創建代理,或者使用代碼創建代理 - 但您需要代理 - 無法解決此問題。

0

如果你問這個,這意味着你可能會對動態代理生成感興趣。

請看看這個article。有幾點可能需要討論,但這個想法在這裏。

This question也可能有所幫助。

+0

你說得對。我正在嘗試在運行時創建代理。感謝您的鏈接。 – VJAI

相關問題