2009-10-29 81 views
0

任何人都可以指示我如何發送SOAP請求到WCF服務並返回SOAP響應嗎?基本上,Travel客戶端發送帶有搜索參數的SOAP請求,並在數據庫中檢查WCF服務,然後發送適當的節假日。如何發送SOAP請求到WCF服務?

我不斷收到這個錯誤,與我所使用的方法:「遠程服務器返回錯誤:(400)錯誤的請求」

回答

1

你得到的錯誤是因爲服務器不理解HTTP請求。 它可能是您配置的綁定或服務代理在客戶端級別不正確。

或者您定義的服務需要HTTP GET而不是HTTP POST。有時,添加服務引用可能不會爲某些[WebGet]歸因操作生成正確的HTTP動詞。您可能需要手動爲客戶端的操作添加[WebGet]。

0

你還沒有給出很多關於你與服務有多遠的細節,所以很難說。

如果這實際上是服務的第一次命中,如果WCF沒有正確註冊到IIS,則可能會發生此錯誤。具體而言,.svc擴展需要映射到ASP.NET ISAPI模塊。

0

要麼看看SoapUI,或找到WcfTestClient深深埋藏在你的Visual Studio文件夾(C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE)。

兩者都可以連接到WCF服務併發送/接收SOAP消息。

或者創建自己的小客戶端,使用svcutil.exe

svcutil.exe (service URL) 

將創建一個小* cs文件,併爲你的* .config文件,然後你就可以使用調用服務。

Marc

0

感謝您抽出時間回答此問題。 服務工作正常,如果客戶端創建對我的WCF服務的引用並進行方法調用,則會發送相應的響應。

我忘了添加,我的客戶端發送HTTP POST請求到我的WCF服務。 然後創建適當的響應並將其返回給客戶端。

我可以讀取HTTP請求,但是當我試圖訪問HTTP響應,我得到的錯誤 - 「遠程服務器返回錯誤:(400)錯誤的請求」

錯誤發生當代碼到達該行:

 // Get the response. 
     HttpWebResponse response = request.GetResponse() as HttpWebResponse; 

見下文代碼:

private void CreateMessage() 
    { 
     // Create a request using a URL that can receive a post. 
     WebRequest request = WebRequest.Create("http://www.XXXX.com/Feeds"); 
     string postData = "<airport>Heathrow</airport>"; 

//用戶功能 請求。Method =「POST」;

 byte[] byteArray = Encoding.UTF8.GetBytes(postData); 
     request.ContentType = "application/soap+xml; charset=utf-8"; 
     request.ContentLength = byteArray.Length; 

     Stream dataStream = request.GetRequestStream(); 
     dataStream.Write(byteArray, 0, byteArray.Length); 
     dataStream.Close(); 

     // Get the response. 
     HttpWebResponse response = request.GetResponse() as HttpWebResponse; 

     // Display the status. 
     HttpContext.Current.Response.Write(((HttpWebResponse)response).StatusDescription); 

     // Get the stream containing content returned by the server. 
     dataStream = response.GetResponseStream(); 

     // Open the stream using a StreamReader for easy access. 
     StreamReader reader = new StreamReader(dataStream); 

     // Read the content. 
     string responseFromServer = reader.ReadToEnd(); 

     // Display the content. 
     HttpContext.Current.Response.Write(responseFromServer); 

     // Clean up the streams. 
     reader.Close(); 
     dataStream.Close(); 
     response.Close(); 

    } 

問候

科喬

相關問題