簡體   English   中英

如何在C#中修復協議違規

[英]how to fix protocol violation in c#

我有一個ac#“客戶端”和一個Java“服務器”。 Java服務器有一個服務於客戶機的wsdl。 到目前為止,對於C#來說,它可以請求服務器執行Soap操作。 我的服務器獲取soap請求執行該方法,然后嘗試將結果返回給客戶端。

但是,當我將響應發送到c#時,出現“服務器已違反協議。Section = ResponseStatusLine”。

我花了一整天的時間來解決此問題,但沒有解決任何問題。 如果我解釋一下我的所作所為,那么這篇文章會很長,因此我將簡短介紹。

我用Google搜索了幾個小時,一切都告訴我我的“響應熱線”是正確的。 我嘗試關閉Skype,重新排列響應線,添加內容,刪除內容等,等等。一切無濟於事。

這是用於類分配的,所以不,我不能使用api來提供幫助。 我必須在服務器端手動執行所有操作。 這意味着需要手工解析,並手工創建soap響應和http響應。 只是想說您想知道這一點,然后再說要使用對我有用的東西。

我什至嘗試通過創建一個Java客戶端來模仿我的C#,從而確保服務器發送正確的標頭,以便我可以看到服務器返回的內容。 但是,它恰好返回了我告訴它發送的內容。

我試着告訴我的Java客戶端執行相同的操作,但實際上是運行c#服務,以查看實際的服務返回什么,並且它返回的基本相同。 為了安全起見,我復制了它的響應並嘗試將其發送到c#客戶端,但仍然拋出錯誤。

有人可以幫忙嗎? 我已經嘗試過所有我能想到的,包括將useUnsafeHeaderParsing添加到我的應用程序配置中。 不過什么都沒有。 我發送的恰好是真實服務發送的消息,它大吼大叫。 我寄給我想要的東西,然后大喊。

我發送此:

"200 OK HTTP/1.0\r\n" +
"Content-Length: 201\r\n" +
"Cache-Control: private\r\n" +
"Content-Type: text/xml; charset=utf-8\r\n\r\n";

錯誤的原因是狀態行語法錯誤。 根據RFC,狀態行語法為:

狀態行= HTTP版本SP狀態代碼SP原因短語CRLF

您以錯誤的方式獲得了響應狀態行的各個部分……就像錯誤消息告訴您一樣!


一些忠告:

  • 不要嘗試在此級別上談論HTTP或SOAP。 這些協議很復雜,並且存在執行此類操作的現有實現良好且文檔完善的庫。 使用它們,不要浪費時間重新發明輪子。

  • 如果您確實想/需要自己實現這些東西,那么閱讀並理解相關規范至關重要。 使用Google可以輕松找到它們。

(我不會提供鏈接, 因為那只會鼓勵您浪費時間來構建與帶有方輪的馬車相當的軟件。因為您需要學習自己尋找和使用它們……理所當然的。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM