Search code examples
vbscriptasp-classic

Saving remote CSV file locally in asp classic


Getting an error when saving a CSV file (datafeed) from a remote server. It works as expected with some datafeeds but flags an error with others.

The code retrieves the remote datafeed and saves it locally as datafeed.csv

Here is the script so far.

Set xhr = Server.CreateObject("MSXML2.ServerXMLHTTP")
xhr.Open "GET", remote_datafeed, False
xhr.Send

IF NOT xhr.Status = 200 THEN
Response.write"Error retrieving remote CSV file"

else


sResponse = split(xhr.responseText, vbcrlf)


set datafeed = fs.CreateTextFile("files/datafeed.csv", true)

For i = 0 to uBound(sResponse)  
        datafeed.WriteLine sResponse(i)
Next

Response.write "Remote file has successfully been save locally <br>"

datafeed.close
set datafeed = nothing

I somtimes get an error on the following line.

datafeed.WriteLine sResponse(i)

The error im getting is:

Microsoft VBScript runtime error '800a0005'
Invalid procedure call or argument 

Solution

  • After looking throught the remote datafeed, turns out it was to do with utf-8 charset. Changed to the following code solved this issue with utf-8 charset.

    Dim objStream 
    Set objStream = Server.CreateObject("ADODB.Stream")
    objStream.Type = 2
    objStream.Mode = 3
    objStream.Open
    objStream.Position = 0
    objStream.Charset = "UTF-8"
    objStream.WriteText xhr.responseText
    objStream.SaveToFile "files/datafeed.csv"
    objStream.Close
    Set objStream = nothing