Just nu i M3-nätverket
Jump to content

Läsa fil på annan server


Wildcard

Recommended Posts

På en sida jag gjort så läser jag en HTML-fil som ligger på en annan server och sparar innehållet i en variabel som jag jobbar vidare med sen. Koden jag använder är följande:

 

<%@ LANGUAGE=VBScript ENABLESESSIONSTATE=True %>

<% Response.Buffer=True

 

strPage = "http://www.enserver.com/ensida.html"

On Error Resume Next

Set objXMLHttp = Server.CreateObject ("Microsoft.XMLHTTP")

objXMLHttp.Open "GET", strPage ,False,"",""

objXMLHttp.Send

If Err.Number = 0 Then

If objXMLHttp.Status = 200 then

GetHTML = objXMLHttp.ResponseText

Else

GetHTML = "Incorrect URL"

End if

Else

GetHTML = Err.Description

End If

Set objXMLHttp = Nothing

...

 

Problemet är att det blir fel i läsningen om sidan jag läser innehåller å,ä,ö. Om sidan tex innehåller följande:

<td>Börja</td>

 

så blir resultatet av läsningen:

 

<td>B?</td>

 

Alltså "ö" ersätts med "?" och några tecken efter "ö" bara försvinner. Hur 17 gör man för att lösa detta?

Link to comment
Share on other sites

Nej det är just det som inte går. Det är det som är problemet. Det jag skrev i mitt inlägg är exakt vad som finns i variabeln när jag läst sidan. Alltså "fula" tecken byts mot "?" och följande 1,2 eller 3 tecken bara försvinner. Det går inte återskapa den ursprungliga texten av detta.

 

I originalfilen:

 

<td>Börja</td> <- obs "ö". inte &ouml;

 

Läsningen av filen ger:

 

<td>B?</td> <- "ö" ersatt av "?" plus flera tecken saknas.

 

 

 

Link to comment
Share on other sites

Lite långsökt men har du kollat prövat att logga in som din internet användare på servern och öppnat den externa sidan. Får du då samma problem när du läser sidan direkt?

 

Link to comment
Share on other sites

Kan vara fel "decoder" när den konverterar från byte till string. Ex. uppstår ofta det här problemet på svenska siter när man försöker ladda ner dom genom "GET"-strängar i VB. Brukar kunna lösas genom att använda UTF8 istället för ASCII. Har dock ingen koll på hur detta går till i ASP. Men det går säkert att ställa in i objektet Microsoft.XMLHTTP.

 

Link to comment
Share on other sites

Enda sättet jag känner till, borde iofs gå på något bättre sätt, är att ta det binärt så att säga istället för att använda "ResponseText"

 

Typ:

<%

function BinToText(varBinData, intDataSizeInBytes)
 const adFldLong = 128
 const adVarChar = 200
 set objRS = Server.CreateObject("ADODB.Recordset")

 objRS.Fields.Append "txt", adVarChar, intDataSizeInBytes, adFldLong
 objRS.Open

 objRS.AddNew
 objRS.Fields("txt").AppendChunk(varBinData)
 tmp = objRS("txt").Value
 objRS.Close
 BinToText = tmp
end function



Set objHTTP = Server.CreateObject("Microsoft.XMLHTTP")
objHTTP.Open "GET", "http://www.enserver.com/ensida.html", False


objHTTP.setRequestHeader "Content-type","text/html"

objHTTP.Send

strHTML = BinToText(objHTTP.responseBody,35000)

Set objHTTP = Nothing

response.write strHTML
%>

 

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...