2017-04-06 73 views
0

我使用此代碼來捕獲網絡攝像機的圖像:我爲什麼要這麼做時Stream.CanSeek是假

HttpWebRequest reqs = (HttpWebRequest)WebRequest.Create("http://" + ip + snapshotCommand); 
reqs.Method = "POST"; 
reqs.Timeout = 4000; 
reqs.Credentials = new NetworkCredential(user, pass); 
reqs.PreAuthenticate = true; 

HttpWebResponse resp = (HttpWebResponse)reqs.GetResponse(); 
if (resp != null) 
{ 
    Stream stm = resp.GetResponseStream(); 
    img = new Bitmap(stm); 
    stm.Close(); 
} 

但流拋出一個異常,因爲CanSeek & CanWrite是假的。 我嘗試了很多方法,例如Copyto(MemoryStream),但問題仍然存在。 你能幫我解答嗎?

這是使用代碼的MemoryStream:

Stream stm = resp.GetResponseStream(); 
MemoryStream ms = new MemoryStream(); 
stm.CopyTo(ms); 
ms.Position = 0; 

而這個 「毫秒」 爲ReadTimeout & WriteTimeout丟給: 消息 「超時不支持此流。」 因爲canTimeout()對於MemoryStream也是錯誤的。

最後我找到了這個解決方案,並且它工作得很好: https://stackoverflow.com/a/2368505/492628

+0

我也試過緩衝區解決方案 – Negar

+0

顯示覆制到'MemoryStream'的代碼和你得到的錯誤 – Brandon

+0

不要將代碼粘貼到註釋中;這樣的代碼是不可讀的。請編輯問題並將代碼粘貼到那裏。 – Amy

回答

0

你應該能夠流複製到內存流,如果它是不可搜索

這裏的a post可能的幫助。

+0

我將我的代碼添加到問題中。這個解決方案也是例外。 – Negar

+1

問題可能出現在Web服務提供商的供應商一方。 – Jofairden

+0

我很容易在瀏覽器中用快照命令捕捉'圖像',但是在我的代碼中讀取流時,存在這些問題 – Negar

相關問題