Трабл с WebRequest
От: Nail  
Дата: 03.07.02 12:11
Оценка:
При попытке закачать "большой" файл (размер более 12249 байт)
в бинарный массив, закачивается только 12249 байт:

Dim myWRequest As System.Net.WebRequest = System.Net.WebRequest.Create("http://server/dwnlds/test.dat")
Dim myResponse As WebResponse = myWRequest.GetResponse()
Dim myStream As Stream = myResponse.GetResponseStream()
Dim tmpBytes As Byte()
ReDim tmpBytes(myWRequest.ContentLength — 1)
Console.WriteLine(myStream.Read(tmpBytes, 0, myWRequest.ContentLength)) ' Возвращает 12249

Это глюк или фича?
Re: Трабл с WebRequest
От: Lexey Россия  
Дата: 08.07.02 19:50
Оценка:
Здравствуйте Nail, Вы писали:

N>При попытке закачать "большой" файл (размер более 12249 байт)

N>в бинарный массив, закачивается только 12249 байт:

N>Dim myWRequest As System.Net.WebRequest = System.Net.WebRequest.Create("http://server/dwnlds/test.dat")

N>Dim myResponse As WebResponse = myWRequest.GetResponse()
N>Dim myStream As Stream = myResponse.GetResponseStream()
N>Dim tmpBytes As Byte()
N>ReDim tmpBytes(myWRequest.ContentLength — 1)
N>Console.WriteLine(myStream.Read(tmpBytes, 0, myWRequest.ContentLength)) ' Возвращает 12249

Я бы вообще не стал полагаться на ContentLength. Во-первых, сервер вообще не обязан его выставлять. Во-вторых, существует такая штука, как Chunked Transfer Encoding, когда контент передается кусками и у каждого из них свой Content Lenght. Вполне возможно, что ты попал на одну из этих ситуаций.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.