任何人都可以指示我如何發送SOAP請求到WCF服務並返回SOAP響應嗎?基本上,Travel客戶端發送帶有搜索參數的SOAP請求,並在數據庫中檢查WCF服務,然後發送適當的節假日。如何發送SOAP請求到WCF服務?
我不斷收到這個錯誤,與我所使用的方法:「遠程服務器返回錯誤:(400)錯誤的請求」
任何人都可以指示我如何發送SOAP請求到WCF服務並返回SOAP響應嗎?基本上,Travel客戶端發送帶有搜索參數的SOAP請求,並在數據庫中檢查WCF服務,然後發送適當的節假日。如何發送SOAP請求到WCF服務?
我不斷收到這個錯誤,與我所使用的方法:「遠程服務器返回錯誤:(400)錯誤的請求」
你得到的錯誤是因爲服務器不理解HTTP請求。 它可能是您配置的綁定或服務代理在客戶端級別不正確。
或者您定義的服務需要HTTP GET而不是HTTP POST。有時,添加服務引用可能不會爲某些[WebGet]歸因操作生成正確的HTTP動詞。您可能需要手動爲客戶端的操作添加[WebGet]。
你還沒有給出很多關於你與服務有多遠的細節,所以很難說。
如果這實際上是服務的第一次命中,如果WCF沒有正確註冊到IIS,則可能會發生此錯誤。具體而言,.svc擴展需要映射到ASP.NET ISAPI模塊。
要麼看看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
感謝您抽出時間回答此問題。 服務工作正常,如果客戶端創建對我的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();
}
問候
科喬