Just nu i M3-nätverket
Gå till innehåll

Läsa fil på annan server


Wildcard

Rekommendera Poster

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?

Länk till kommentar
Dela på andra webbplatser

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.

 

 

 

Länk till kommentar
Dela på andra webbplatser

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?

 

Länk till kommentar
Dela på andra webbplatser

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.

 

Länk till kommentar
Dela på andra webbplatser

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
%>

 

 

Länk till kommentar
Dela på andra webbplatser

Det ser intressant ut. Jag ska testa detta sättet. Måste bara klura ut först exakt vad koden gör ;-) Tack så länge.

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...