[ASP] Probleempje met HTTP request

Pagina: 1
Acties:

  • Nutcaze
  • Registratie: Oktober 1999
  • Laatst online: 24-07 10:48
Als ik een HTTP request doe met het object Msxml2.ServerXMLHTTP dan krijg ik bij speciale tekens zoals de ë een vraagteken terug. Ook de 2 opvolgende karakters missen dan.

Weet iemand hier een oplossing voor?

Not all chemicals are bad. Without hydrogen or oxygen, for example, there would be no way to make water, a vital ingredient in beer.


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 11:55

TeeDee

CQB 241

Encoding goed zetten?

Heart..pumps blood.Has nothing to do with emotion! Bored


Verwijderd

Kun je dit wat verduidelijken met code?
Is het een optie om ë te vervangen door een gewone e ?

  • Nutcaze
  • Registratie: Oktober 1999
  • Laatst online: 24-07 10:48
En hoe zet ik de encoding goed? Ik zie wel een mogelijkheid om de requestheader of zo te zetten maar ik zou niet weten naar wat dan...ik heb er 2 geprobeerd maar deden allebei hetzelfde dus dat zal het wel niet zijn.

Een voorbeeld: ik doe een request naar een andere server om de output daarvan te gebruiken. Dit kan dus een willekeurig html document zijn (al of niet gegeneerd door een script zoals ASP). Als daar bijvoorbeeld de tekst "de blablabla is beëindigd door deze of gene" dan krijg ik dus terug als output: "de blablabla is be?digd door deze of gene".

[ Voor 3% gewijzigd door Nutcaze op 03-10-2003 16:52 . Reden: schrijffoutjes ]

Not all chemicals are bad. Without hydrogen or oxygen, for example, there would be no way to make water, a vital ingredient in beer.


Verwijderd

Response.Charset = "utf-8" ?

(niet uitgeprobeerd)

[ Voor 43% gewijzigd door Verwijderd op 03-10-2003 16:46 ]


  • Nutcaze
  • Registratie: Oktober 1999
  • Laatst online: 24-07 10:48
Nee werkt niet. Heb het zelfs in het document gezet wat ik ophaal, maar zelfs dan werkt het niet.

Not all chemicals are bad. Without hydrogen or oxygen, for example, there would be no way to make water, a vital ingredient in beer.


  • Nutcaze
  • Registratie: Oktober 1999
  • Laatst online: 24-07 10:48
Weet dan iemand toevallig hoe ik ervoor zorg dat als ik een Msxml2.DOMDocument aanmaak en een node vul dat de inhoud van deze node (de eigenlijke data) niet meteen gecodeerd wordt? Ik wil dus dat als ik een < in de inhoud heb dat dit een < blijft en niet wordt geconverteerd naar & lt;.

[ Voor 3% gewijzigd door Nutcaze op 04-10-2003 20:30 ]

Not all chemicals are bad. Without hydrogen or oxygen, for example, there would be no way to make water, a vital ingredient in beer.


Verwijderd

Wat is je code? Anders stellen we alleen maar dingen voor die je zelf al (geprobeerd) hebt. En anders kun je dit eens proberen:

http://support.microsoft....0/5/91.ASP&NoWebContent=1
http://support.microsoft....2/1/84.ASP&NoWebContent=1
http://msdn.microsoft.com...r/html/askgui05072002.asp

  • Nutcaze
  • Registratie: Oktober 1999
  • Laatst online: 24-07 10:48
Ik heb een bestand op een centrale server ergens staan met de volgende code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
BegripID = Request("begripID")

AllesOK = True
If Not IsNumeric(BegripID) Then
    AllesOK = False
End If

If AllesOK Then
    Set con = Server.CreateObject("ADODB.Connection")
    con.Open DSN
    Set rsBegrip = con.Execute("SELECT titel, omschrijving FROM Begrippen WHERE begripID = " & BegripID)
    If rsBegrip.eof Then
        AllesOK = False
    Else
        Titel = rsBegrip("titel")
        Omschrijving = rsBegrip("omschrijving")
    End If
    rsBegrip.Close
    Set rsBegrip = Nothing
    con.Close
    Set con = Nothing
End If

If AllesOK Then
    Output = "<Bericht><Titel>" & Titel & "</Titel><Omschrijving>" & Replace(Omschrijving,vbCrLf,"") & "</Omschrijving></Bericht>"
Else
    Output = "<Error><ErrorID>1</ErrorID><Description>BegripID bestaat niet</Description></Error>"
End If

Response.Write(Output)


Ik heb het geprobeerd d.m.v. het aanmaken van zo'n DomDocument, hier wordt echter de HTML die in omschrijving zit automatisch geconverteerd naar de eh Server.HTMLEncode versie zeg maar. Dit moet niet gebeuren dus dacht ik, ik schrijf gewoon een tekststring weg. Tot zover OK. Maar als ik nu deze xml ophaal vanaf een andere server d.m.v. een HTTP request worden alle bijzondere tekens zoals dus de ë vervangen voor een vraagteken (herkent ze dus niet of zo).

De request doe ik als volgt:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
BegripID = Request("begripID")
Set objXmlHttp = Server.CreateObject("Msxml2.ServerXMLHTTP")

objXmlHttp.open "GET", "http://www.servernaam.nl/bestandsnaam.asp?begripID=" & BegripID, False

objXmlHttp.Send
Output = objXmlHttp.responseText

Response.Write(Output)

Set objXmlHttp = Nothing

Set Begrip = Server.CreateObject("MSXML.DOMDocument")
Begrip.LoadXML Output

Response.Write(Begrip.XML)

Set Begrip = Nothing

Not all chemicals are bad. Without hydrogen or oxygen, for example, there would be no way to make water, a vital ingredient in beer.


Verwijderd

Kijk eens hier, volgens mij word daar precies de oplossing gegeven, alleen op een minder mooie manier. Anders weet ik het ook niet ;)

  • Nutcaze
  • Registratie: Oktober 1999
  • Laatst online: 24-07 10:48
Ja ik snap niet precies wat er allemaal gebeurt in dat script maar het moet toch mooi mogelijk zijn....die xml-string zit me al dwars. Ook dat zie ik liever via zo'n DomDocument.

Not all chemicals are bad. Without hydrogen or oxygen, for example, there would be no way to make water, a vital ingredient in beer.


  • j_du_pee
  • Registratie: Maart 2000
  • Laatst online: 23-09-2024

j_du_pee

du pain, du vin, du pee

als je boven het script, waar de data vandaan wordt opgehaald de goede headers meegeeft wordt het leven makkelijker ;)
code:
1
<%response.addheader "Content-type:", "text/html; charset=ISO-8859-1"%>


msxml weet dan wat voor encoding het terugkrijgt en kan het goed converteren...

offtopic:
hoi nutcaze :)

kaart != map && bottel != fles
Wacht op antwoord


  • Swerfer
  • Registratie: Mei 2003
  • Laatst online: 21-08 21:41

Swerfer

Hmm...

Heb je al eens aan server.htmlEncode gedacht? Misschien kan je daar wat mee.

Home Assistant | Unifi | LG 51MR.U44 | Volvo EX30 SMER+ Vapour Grey, trekhaak | SmartEVSE V3 | Cronos Crypto.com


  • Nutcaze
  • Registratie: Oktober 1999
  • Laatst online: 24-07 10:48
Heeee j_du_pee!

Ik heb het even geprobeerd hoor maar ik blijf hetzelfde probleem houden.

Server.HTMLEncode is nou juist precies wat ik niet wil zeg maar, meer het tegenovergesteld dan. Eigenlijk moet ie helemaal geen conversieslag maken maar als het niet anders kan...

Not all chemicals are bad. Without hydrogen or oxygen, for example, there would be no way to make water, a vital ingredient in beer.


Verwijderd

Server.HTMLEncode wil je wel.
Je moet een conversieslag maken, anders is het niet mogelijk.
Bijv 'ë' moet je converten en dan terug pompen naar de webbrowser.

Geloof me , ik heb ervaring met xmlhttp
Dit is de enige methode

Een webbrowser kan zelf de html weer decoden

  • Nutcaze
  • Registratie: Oktober 1999
  • Laatst online: 24-07 10:48
Het probleem met Server.HTMLEncode is dat dit er ook voor zorgt dat de html verloren gaat. < wordt vervangen door & lt;. Dan kan je zeggen dat je die weer vervangt bij binnenhalen voor een < maar dan pak je dus ook meteen de tekst (dus niet voor een HTML tag bedoelde) rechte haken mee.

Not all chemicals are bad. Without hydrogen or oxygen, for example, there would be no way to make water, a vital ingredient in beer.


Verwijderd

Erm.
Niet helemaal waar.
Ik werk veel met xmlhttp voor het ophalen van hele tabellen (die laat ik maken door een asp pagina) die ik dan met xmlhttp ophaal en in een div flikker.
Ook na een htmlencode ziet de data er prima uit en snapt hij gewoon tags zoals <table> etc

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
function globStatClass.prototype.createTable() {

    writeline('<table id="mainTable" class=\"tableMain\">');

    for (var y = 0; y < 6; y++) {

        writeline('<th class=\"tableHeader\">'+this.headerArr[y]+'</th>');
    }

    for ( var x = 0; x < this.enqData[0].length; x++ ) {

        writeline('<tr class=\"tableRow\">');

        for (var y = 0; y < 6; y++) {

            writeline('<td class=\"tableCell\">');

            writeline(Server.HTMLEncode(this.enqData[y][x]));

            writeline('</td>');

        }

    writeline('<tr>');

    }

    writeline('</table>');
    return true;
}


Die response is gewoon perfect. Levert goede html op. Niets mis mee dus

Verwijderd

oh sorry! :)
haha ik encode alleen de table cell text :) de rest laat ik gewoon plain versturen.
Foutje! :P

Verwijderd

Erm.
Niet helemaal waar.
Ik werk veel met xmlhttp voor het ophalen van hele tabellen (die laat ik maken door een asp pagina) die ik dan met xmlhttp ophaal en in een div flikker.
Ook na een htmlencode ziet de data er prima uit en snapt hij gewoon tags zoals <table> etc

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
function globStatClass.prototype.createTable() {

    writeline('<table id="mainTable" class=\"tableMain\">');

    for (var y = 0; y < 6; y++) {

        writeline('<th class=\"tableHeader\">'+this.headerArr[y]+'</th>');
    }

    for ( var x = 0; x < this.enqData[0].length; x++ ) {

        writeline('<tr class=\"tableRow\">');

        for (var y = 0; y < 6; y++) {

            writeline('<td class=\"tableCell\">');

            writeline(Server.HTMLEncode(this.enqData[y][x]));

            writeline('</td>');

        }

    writeline('<tr>');

    }

    writeline('</table>');
    return true;
}


Die response is gewoon perfect. Levert goede html op. Niets mis mee dus

Verwijderd

hoppa!! nog een foutje!

MAar je heb helemaal gelijk
Ook met setRequestHeader lukt het niet. Je moet toch echt de data die gevoelig is voor charset type encoden en de normale html gewoon plain versturen

  • j_du_pee
  • Registratie: Maart 2000
  • Laatst online: 23-09-2024

j_du_pee

du pain, du vin, du pee

jackieherer, relax!

er zit een EDIT knopje in je taakbalk ;)

dan hoef je niet steeds een nieuwe post te maken, want dat wordt over het algemeen niet op prijs gesteld ;)


btw Nutcaze, heb je een URI waar je je GET op doet voor ons :?

[ Voor 61% gewijzigd door j_du_pee op 06-10-2003 16:51 ]

kaart != map && bottel != fles
Wacht op antwoord

Pagina: 1