12 messaggi dal 14 dicembre 2001
Salve ragazzi ho un problema.
Ho una funzione che uso da tempo per leggere RSS (e quindi supercollaudata)
ma che stranamente non riesce a leggere un RSS così composto:

----------------------------------------------------
<?xml version="1.0" encoding="utf-8" ?>
- <search>
<session id="ABCDE..." />
<details year="2006" />
- <result count="1">
<id>22</id>
<url>http://www.pippo.com/</url>
<name>Pippo</name>
<image>immagine</image>
<description>Pippo è amico di Topolino</description>
</result>
</search>
-----------------------------------------------------


La funzione che uso è:


-------------------------------------------
Set objXML = Server.CreateObject("msxml2.DOMDocument.3.0")
objXML.async = true
objXML.setProperty "ServerHTTPRequest", True
objXML.validateOnParse =false' true
objXML.preserveWhiteSpace = false
blnLoaded = objXML.Load(URL)
If Not blnLoaded Then
Response.write"Problemi nella connesione"
End if
------------------------------------------


e immancabilmente entra nell'IF stampandomi "Problemi nella connesione"
Mi da errore in partenza, prima ancora che possa esplorare l'albero.


Sapete dirmi come mai e come poter risolvere questo problema? Ho provato a
cambiare diverse cose ma niente...
L'unica cosa che mi viene in mente è che con questa funzione ho sempre letto
RSS che partivano con la dichiarazione <?xml version="1.0"
encoding="iso-8859-1" ?> mentre in questo caso è <?xml version="1.0"
encoding="utf-8" ?> ma non so se c'entra qualcosa.


Grazie a tutti in anticipo.


Luca
L'XML dichiara un encoding utf-8 ma poi usa un carattere accentato ("è amico")...

Matteo Casati
GURU4.net
12 messaggi dal 14 dicembre 2001
uhm... purtroppo non dipende da quello... la frase "è amico" l'ho inserita io come esempio (sbagliando) ma nell'xml reale non ci sono lettere accentate (è in inglese).. sto uscendo pazzo, altre idee?
L'XML è valido? E' possibile vederlo e/o sapere da che url lo prendi (se pubblico)?

Matteo Casati
GURU4.net
12 messaggi dal 14 dicembre 2001
Guarda, purtroppo che sia valido o meno non posso farci comunque nulla perchè l'xml non lo genero io ma mi viene fornito dalla società affiliata.
Puoi però vederlo qui:
http://www.activehotels.com/servlet/search/xmlsearch.do?countryCode=IT&postcodeOrTown=rome

ti ringrazio molto per l'aiuto, gentilissimo :)
Ho provato il tuo codice ottenendo lo stesso risultato ("Problemi nella connesione")

Ritengo che il problema nasca dal fatto che stai caricando il file in modalità asincrona (objXML.async = True) senza verificare il completamento del caricamento (evento onreadystatechange).

La soluzione + semplice è quella di passare in modalità sincrona, come da esempio seguente (testato e funzionante):

Set objXML = Server.CreateObject("msxml2.DOMDocument.3.0") 
objXML.async = False 
objXML.setProperty "ServerHTTPRequest", True 
objXML.validateOnParse = False
objXML.preserveWhiteSpace = false 
objXML.Load(URL) 
If (objXML.readyState <> 4) Then
 Response.Write "Problemi nella connessione"
Else
 Response.Write Server.HTMLEncode(objXML.xml)
 'TODO: usare l'XML ricevuto
End If


P.S.: un controllino di validazione dell'XML lo farei comunque..

Matteo Casati
GURU4.net
12 messaggi dal 14 dicembre 2001
uhm... innanzitutto grazie infinite per l'aiuto!
Ma avevo già provato a caricare in modalità sincrona e infatti lo script continua a non funzionarmi..
l'esempio che mi hai inviato non va in errore solo perchè si usa la condizione

If (objXML.readyState <> 4) then


ma se uso la condizione precedente

If Not(objXML.Load(URL)) Then


ecco che l'errore si ripresenta.. e in effetti dopo, "esplorando" l'xml, non mi restituisce alcun valore... boh! non riesco proprio a capire il problema... :(
lucacuck ha scritto:

l'esempio che mi hai inviato non va in errore solo perchè si usa la condizione

If (objXML.readyState <> 4) then


ma se uso la condizione precedente

If Not(objXML.Load(URL)) Then


ecco che l'errore si ripresenta


Ma è quello che ti ho detto io: con la modalità sincorna devi verificare solo lo stato del caricamento (come ho fatto io).
Perché ti ostini a verificare il risultato (bool) di Load?
Non capisco...

Matteo Casati
GURU4.net

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.