Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: [VBA] Сохранить файл с помощью http запроса Добавлено: 19.09.10 16:24  

Автор вопроса:  Alex79
Добрый день, коллеги.
Очень нужна ваша помощь. Я пытаюсь сохранить файл при помощи http запросами средствами MSXML2.XMLHTTP.
Когда я пробую сохранить просто обычную страницу, то все ок, приходит ответ от сервера и я сохраняю пришедший ответ в файл. Но когда я отправляю запрос, и в ответ на это мне сервер должен прислать файл, у меня ничего не получается. Пишет что тело запроса пустое и статус 200, типа все ок. Укажите пожалуйста, где моя ошибка. Прилагают пример файла с примерами.

Option Explicit
Function SaveWebFile(ByVal vWebFile As String, ByVal vLocalFile As String) As Boolean
 Dim oXMLHTTP As Object, i As Long, vFF As Long, oResp() As Byte
Dim strResponse  As String
 'You can also set a ref. to Microsoft XML, and Dim oXMLHTTP as MSXML2.XMLHTTP
 Set oXMLHTTP = CreateObject("MSXML2.XMLHTTP.6.0")
 oXMLHTTP.Open "GET", vWebFile, False 'Open socket to get the website
 'oXMLHTTP.setRequestHeader "Accept-Charset", "windows-1251"
 oXMLHTTP.setRequestHeader "Content-Type", "finam/expotfile"
 
 oXMLHTTP.setRequestHeader "Content-Type", "finam/expotfile"
 oXMLHTTP.setRequestHeader "Content-Disposition", "attachment; filename=""TAVR_100919_100919.txt"""
 oXMLHTTP.setRequestHeader "Content-Encoding", "gzip"
 oXMLHTTP.setRequestHeader "Vary", "Accept-Encoding"
 oXMLHTTP.setRequestHeader "Transfer-Encoding", "chunked"
 oXMLHTTP.setRequestHeader "Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
 oXMLHTTP.setRequestHeader "Accept-Language", "ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3"
 oXMLHTTP.setRequestHeader "Accept-Encoding", "gzip,deflate"
' oXMLHTTP.setRequestHeader "Content-Type", "finam/expotfile"
' oXMLHTTP.setRequestHeader "Content-Type", "finam/expotfile"
' oXMLHTTP.setRequestHeader "Content-Type", "finam/expotfile"
 
 oXMLHTTP.Send 'send request
  oResp = oXMLHTTP.responseBody 'Returns the results as a byte array
Dim oText
oText = oXMLHTTP.responseTEXT 'Returns the results as a byte array

 Debug.Print oXMLHTTP.Status
 Dim rt
 rt = oXMLHTTP.responseBody

'Dim oADOStream
'Set oADOStream = CreateObject("ADODB.Stream")
'oADOStream.Type = 1
'oADOStream.Mode = 3
'oADOStream.Open
'oADOStream.Write rt
'oADOStream.SaveToFile "c:\anyfilename.txt"
'oADOStream.Close
'Set oADOStream = Nothing

'Set objHTTP = Nothing
 
 'Wait for request to finish
 Do While oXMLHTTP.readyState <> 4
  DoEvents
 Loop
 
 Sheet1.Range("A1").Value = strResponse
 
 'Create local file and save results to it
 vFF = FreeFile
 If Dir(vLocalFile) <> "" Then Kill vLocalFile
 Open vLocalFile For Binary As #vFF
 Put #vFF, , oResp
 Close #vFF
 
 'Clear memory
 Set oXMLHTTP = Nothing
End Function

Sub TestingTheCode()
 
'It doesn't work
SaveWebFile "http://195.128.78.52/TAVR_100919_100919.txt?d=d&market=1&em=19012&df=19&mf=8&yf=2010&dt=19&mt=8&yt=2010&p=7&f=TAVR_100919_100919&e=.txt&cn=TAVR&dtf=1&tmf=1&MSOR=0&sep=1&sep2=1&datf=2&at=1", "C:\finam.txt"

'It works
SaveWebFile "http://lingvo.abbyyonline.com/ru/en-ru/excellent", "C:\lingvo.txt"

End Sub





Кроме этого дают ссылку на пример файла с депозита.

http://depositfiles.com/files/ft50gljv2

Ответить

  Ответы Всего ответов: 2  

Номер ответа: 1
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #1
Добавлено: 19.09.10 17:56
Эм. Ну, лично я скачал файл http://195.128.78.52/TAVR_100919_100919.txt?d=d&market=1&em=19012&df=19&mf=8&yf=2010&dt=19&mt=8&yt=2010&p=7&f=TAVR_100919_100919&e=.txt&cn=TAVR&dtf=1&tmf=1&MSOR=0&sep=1&sep2=1&datf=2&at=1
и он действительно пустой... Качал я его браузером. Задумайся, топикстартер. И убери лишние ненужные заголовки.

Ответить

Номер ответа: 2
Автор ответа:
 Alex79



Вопросов: 1
Ответов: 1
 Профиль | | #2 Добавлено: 19.09.10 22:39
Огромное спасибо!!!
Действительно файл был пустой!!!
Я очень благодарен, так как уже не знал что делать!!!

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам