[ASP] probleem met ophalen van pagina van andere webserver

Pagina: 1
Acties:

  • zoepercavia
  • Registratie: September 2001
  • Laatst online: 26-12-2025
voor mn website wil ik een pagina van een andere website ophalen, hem parsen en er dan iets nuttigs mee doen...

daarvoor moet ik duur eerst de pagina ophalen, dit doe ik met een XMLHTTP object. Dat gaat opzich prima behalve dat hij speciale characters zoals ë, è, ï niet goed meekrijgt... geïdentificeerd wordt bijvoorbeeld ge?ntificeerd.. behalve dat dit niet leuk is voor mn output, geeft hij ook een foutmelding als ik hem probeer weg te schrijven naar een bestand. Het lijkt er dus sterk op dat de string corrupt is.

Het probleem bestaat al maanden en heb al uren lopen zoeken op Google en MSDN, maar ik kan niks vinden. Charsets veranderen heb ik al geprobeerd, levert ook niks op.

Nu de vraag. Herkent iemand misschien dit probleem? Of weet iemand een andere manier om een pagina met ASP op te halen van een andere web server?

Voor de duidelijkheid dit is mn code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
'Set lObjSpider = Server.CreateObject ("MSXML2.XMLHTTP")
        Set lObjSpider = Server.CreateObject ("MSXML2.ServerXMLHTTP")
        'Set lObjSpider = Server.CreateObject ("Microsoft.XMLHTTP")
        

        With lObjSpider
            .Open "GET", pStrURL, False, "", ""
            .Send
            GetURL = .ResponseText
        End With
        'Response.Write(GetURL)
        Set LobjSpider = Nothing


ik hoop echt dat er een oplossing voor is en dat het niet aan het object ligt ofzo...

Panacea.NL als je geinteresserd bent in IT en Geneeskunde!


  • Shir
  • Registratie: November 2000
  • Laatst online: 25-11-2025
Hoe ziet die pagina er dan uit die je ophaalt? Want in html gebruik je toch & code; voor een speciaal teken? Bv. ë = ë è = è ï = &iuml
Het lijkt mij dat dat object daar geen problemen mee kan hebben.

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 07:40
Duidelijk een probleem met incompatibele character sets. Bekijk om te beginnen eens wat de character coding van de twee pagina's (de eigen pagina en de andere pagina, die je probeert binnen te halen) is. (Dit kan in Mozilla vrij eenvoudig).

Ga verder na wat voor conversie je HTTP-object toepast. De kans is vrij groot dat geen enkele conversie toegepast wordt. In dat geval gaat het natuurlijk mis als jou pagina een andere character coding gebruikt dan de geimporteerde pagina en zul je zelf ofwel conversie moeten toepassen, ofwel de character coding van je eigen pagina's aan moeten passen.

  • zoepercavia
  • Registratie: September 2001
  • Laatst online: 26-12-2025
hmm, de nieuwsgroep search van google heeft uitkomst geboden, maar helaas negatief :(

.responseText ondersteunt van nature alleen UTF-8, geen Unicode. Hierdoor worden alle non-ASCII waarden niet goed doorgegeven...

.responseXML kan het wel, maar daar heb ik niks aan omdat het HTML is, geen XML

tenslotte is er nog hoop in .responseBody, deze geeft een array met unsigned bytes terug, deze kan ik dan met een functie weer omzetten in een string... alleen werkt dit nog niet goed :(

het lijkt er dus op dat het niet gaat lukken, tenzij iemand nog andere oplossingen weet? (geen commerciele/niet standaard objecten graag)...

Panacea.NL als je geinteresserd bent in IT en Geneeskunde!


  • zoepercavia
  • Registratie: September 2001
  • Laatst online: 26-12-2025
ik zit tegen een oplossing aan, alleen ik moet nog 1 ding oplossen. Het is me nu gelukt om via .ResponseBody een reeks (unicode)bytes te krijgen. Nu rest de taak dit weer om te zetten in een string

daarvoor heb ik de volgende functie:
code:
1
2
3
4
5
6
7
8
9
10
private Function Unicode(strResponseBody)
        Dim i, t, a
        t = String(LenB(strResponseBody), " ")
        t = ""
        For i = 1 To LenB(strResponseBody)
            a = AscB(MidB(strResponseBody, i, 1))
            t = t & chr(a)
        Next
        Unicode = t
    End Function


met als argument een array van unsigned bytes (wat ik uit de responsebody krijg)...
alleen nu print ie alles met ascii-waarde > 128 verkeerd... ik weet wel zeker dat de waarde van a (de ascii-waarde) goed is.

Voorbeeld:
- ï heeft ascii-waarde 239, en zo komt hij ook uit responsebody (a==239), chr(239) geeft echter als resultaat 'o'
- geïnterpreteerd wordt geonterpreteerd

waarom wordt chr(239) niet gewoon ï?!
als ik dit heb opgelost dan ben ik, weliswaar via een hack, van het probleem af...

Panacea.NL als je geinteresserd bent in IT en Geneeskunde!


  • zoepercavia
  • Registratie: September 2001
  • Laatst online: 26-12-2025
lama.. ik had de charset-header verkeerd staan.. dit probleem is opgelost...
zorry voor deze monoloog :)
misschien hebben jullie er nog wat aan :P

Panacea.NL als je geinteresserd bent in IT en Geneeskunde!

Pagina: 1