2013-12-11 101 views
3

我使用Apache DefaultHttpClient與HttpPut使用REST API上傳文件。從窗口運行它非常慢,它發送240 kb /秒。但它發送950 kb /秒,當我從MAC運行相同的文件Apache HttpPut請求是從Windows操作系統非常緩慢

我沒有任何明確的Windows和Mac OS的條件。

任何人都可以幫助我解決這個問題。

我的代碼:

HttpPut putRequest = new HttpPut("http://my.localhost.com:8888"); 
FileEntity reqEntity = new FileEntity("c:/test/test.zip","text/plain"); 
putRequest.setEntity(reqEntity); 
putRequest.addHeader("X-Auth-Token",strToken); 
httpResponse = client.execute(putRequest); 
mResponseCode = httpResponse.getStatusLine().getStatusCode(); 
+0

沒有人知道該如何解決? – user2968122

+0

您是否從全新安裝嘗試驗證? – Bart

回答

2

你有Windows機器上運行的防病毒應用程序?嘗試先禁用,看看是否有任何區別。

+1

+1。許多AV掃描儀檢查所有網絡數據包。 –

+0

確實如此。 –

0

我會嘗試這個命令。

netsh int tcp set global autotuninglevel=disabled 

如果不有所作爲,就重新啓用它

netsh int tcp set global autotuninglevel=enabled 

自動調整有時會發生與TCP問題在Windows(和坦白說,我沒有任何想法是什麼它確實),但它在過去造成了一些類似的問題,所以也許值得一試。很高興可能是很多事情。

您必須在更改後重新啓動tho。

+1

如果你鼓勵某人執行一些shell代碼,你最好解釋它在做什麼。 – Bart

+1

當然,當我在這裏抱歉時,我傾向於忘記我還在互聯網上。 http://www.aip.im/2012/10/how-to-disable-receive-window-auto-tuning-level/ 這是我能在5分鐘內找到的最清晰的描述。至於我自己,我在我的個人電腦上運行過這個功能,因爲tomshardware上的隨機人員告訴我這可能會起作用。它確實做到了,所以做到了這一點。 – alex

+0

在這裏,我發現微軟的支持頁面描述更好一點(而且它也比我之前鏈接的博客更官方):https://support.microsoft.com/kb/947239 – alex

0

我認爲你的問題與NIC的驅動程序有關,而不是Java。

轉到開始 - >控制面板 - >設備管理器 - >網絡適配器 - >您的網卡,右鍵單擊然後選擇屬性。

轉到高級選項卡。

使用那些特定於您的網卡的設置進行播放,所以我們無法真正幫助您使用確切的設置。您可能有一些名爲「Large Send Offload(IPv4)」的內容可以禁用。

這裏看到:Slow upload speeds on Windows 7

3

Java是Write once, run anywhere(WORA)。因此,Windows機器上的HTTP連接速度比Mac機器低很多,這與Java無關。

可能有幾個Windows機器的問題可能會降低上傳速度。我建議你在elevated命令提示符下按順序運行下面的命令。

要禁用接收端縮放:

netsh interface tcp set global rss=disabled 

要禁用TCP/IP自動調諧:

netsh interface tcp set global autotuninglevel=disabled 

要禁用所有任務卸載:

netsh int ip set global taskoffload=disabled 

更多細節上面的命令可以找到here

如果問題仍然存在,那麼你應該

  1. 重新安裝用於測試的網絡驅動程序。
  2. 用網絡引導至安全模式以檢查結果。如果工作正常,請檢查Clean Boot中的結果,以檢查哪個第三方工具影響到此。

Shishir