2009-10-16 95 views
0

我有一個DLL庫,我無法控制,它建立一個XML消息,並通過HTTP發送到Web服務器。由於嚴格的規範,服務器將只接受POST HTTP/1.1的消息。但是,服務器中的日誌顯示接收的消息是POST HTTP/1.0。如果我直接在瀏覽器中打開URL,日誌顯示GET HTTP/1.1,這是正確的。我們沒有通過代理服務器,網關也沒有通過我可以告訴的內容來改變版本。我嘗試過兩種不同的網絡,並且遇到同樣的錯誤。另外,我在Windows Server 2003和Windows XP Pro上嘗試過,它們都應該支持HTTP 1.1。HTTP版本問題發佈到服務器的XML消息

有沒有人有任何想法爲什麼服務器使用POST接收HTTP/1.0,但使用GET顯示HTTP/1.1?

編輯: 我已經聯繫了這個DLL製造商,但他們的幫助並不是那麼好。

編輯2: 使用Fiddler,我能夠提取標題,這是張貼在下面。正如你可以看到它使用HTTP/1.0。

POST/48A548C0BA8211DEA1EEE5AF2B3D5823; 48A548C1BA8211DEA1EE8EF735B81699/ SJzWLaVEESCESCX6ESCESCW〜ESC6FESCwxEuESCESCAb,L7ESCecvESCuESCESCrBESCHpESC3 ESCESCJw_ESCESClrj,ESC_4xESCOQpLwyRJGgp6p3YDG uvXESCESC6 wVxESC7.dESCcTvmG5WM HTTP/1.0

內容類型:!應用/ XML;字符集= 「UTF-8」 主機:*** 內容長度:787

+0

好吧,所以要100%確定:當使用DLL來執行HTTP請求時,服務器始終顯示請求是一個HTTP/1.0請求?任何現代瀏覽器都支持HTTP/1.1,順便說一句。 – 2009-10-16 18:06:54

+0

是的。是的,這可能是爲什麼它通過瀏覽器時顯示HTTP/1.1。但是,通過執行某種HTTP請求的DLL顯示HTTP/1.0。 – 2009-10-16 18:12:36

+1

您也可以使用Fiddler檢查瀏覽器和您的網站之間的HTTP數據流量 – 2009-10-16 18:16:11

回答

0

聽起來像你運氣不好看到因爲你不能改變DLL。根據你在上面的評論中的迴應,似乎你使用的DLL使用HTTP/1.0來發送HTTP請求到服務器。

這是一個很好的答案,因爲你沒有指定你正在談論的DLL或提供了額外的細節。

我建議你仔細看看你正在使用的DLL,看看是否可以指示該庫使用HTTP/1.1發送它的請求。

祝你好運。

0

編寫一個代理服務器,接受http/1.0明顯的,然後轉發到目標服務器。如果你只有目標服務器,這可以工作。否則,請與供應商聯繫......或者採取逆向工程作爲一種附帶的愛好。

同樣在小提琴手上,你應該看到請求和迴應。您可以使用此參考正確配置fiddler2與任何httpclient(除了只是IE):http://www.fiddler2.com/fiddler/help/hookup.asp