2010-11-08 147 views
0

我正試圖與一個Web服務接口。我發佈了一個SOAP Evelolpe,它返回一個SOAP響應。如何在沒有WebRequest的情況下使用WCF服務?

我能夠發佈到服務並獲得響應使用Web請求和Response.But我想用WCF來做到這一點。可以請一些身體幫助我實現這一目標。

我的HTTP帖子:

public string HttpPost (string uri, string parameters) 
{ 
    WebRequest webRequest = WebRequest.Create (uri); 
    webRequest.ContentType = "application/soap+xml; charset=utf-8"; 
    webRequest.Method = "POST"; 
    byte[] bytes = Encoding.ASCII.GetBytes (parameters); 
    Stream os = null; 
    try 
    { // send the Post 
     webRequest.ContentLength = bytes.Length; 
     os = webRequest.GetRequestStream(); 
     os.Write (bytes, 0, bytes.Length);   //Send it 
    } 

    try 
    { // get the response 
     WebResponse webResponse = webRequest.GetResponse(); 
     if (webResponse == null) 
     { return null; } 
     StreamReader sr = new StreamReader (webResponse.GetResponseStream()); 
     return sr.ReadToEnd().Trim(); 
    } 
    return null; 
} 
+0

此外,請參閱http://stackoverflow.com/tags/wcf/info – 2010-11-08 20:33:00

回答

3

基本上,你需要的是:

  • 要麼你可以從(通常:(url of your service)?wsdl)一個WSDL的URL
  • 或獲取WSDL (和任何支持XSD)文件從服務提供商例如作爲一個ZIP或下載

下一頁:從Visual Studio中創建一個項目,然後在References在解決方案資源管理器中單擊鼠標右鍵,然後選擇從上下文菜單中Add Service Reference

Add Service Reference Context Menu Item

在磁盤路徑在對話框中直接鍵入URL(與?wsdl),或鍵入您的WSDL/XSD文件的存儲。

Add Service Reference Dialog Box

這將WCF服務參考該服務添加到您的項目。你現在應該在Service Reference下有一個條目 - 在你看到的下面,有一些隱藏的文件,其中包含了現在調用該服務所需的所有生成的代碼。

基本上,其中一個文件應該被稱爲(name of your service)Client - 它在您添加服務引用時定義的名稱空間中(默認爲ServiceReference1)。使用該命名空間,您現在應該可以創建WCF客戶端:

using ServiceReference1; // or whatever you called this namespace 

public void CallService() 
{ 
    YourServiceNameClient client = new YourServiceNameClient(); 

    client.YouShouldSeeServiceMethodsHere(); 
} 

有了這個WCF客戶端,你應該能夠很容易地調用服務方法,並在參數傳遞(字符串等)的方法,並且還可能從該服務方法獲取響應(作爲字符串或作爲類)。

+0

我希望我有時間找到這是重複的最古老的問題。我會將它添加到標記wiki中。 – 2010-11-08 20:33:44

相關問題