PDA

Visualizza la versione completa : Generare file HTML con XMLHTTP


Picciola
21-09-2006, 19:18
Uso questo codice per generare un HTML da ASP


Response.Buffer = True
Dim objXMLHTTP, xml
pagina="http://localhost/prova/alvolo.asp?art=prova2"
Set xml = Server.CreateObject("Microsoft.XMLHTTP")
xml.Open "GET", pagina, False
xml.Send
strHtml = xml.responseText
Set FSO = CreateObject("Scripting.FileSystemObject")
sPath = Server.MapPath("/prova/prova2.htm")
Set f = FSO.CreateTextFile(sPath, True)
f.WriteLine(strHtml)
f.Close
Set f = Nothing
Set FSO = Nothing
set xml = Nothing

Alla riga in rosso mi dà errore:


Tipo di errore:
msxml3.dll (0x80070005)
Accesso negato.

I permessi nella cartella credo siano a posto (nella stessa aggiorno DB, faccio Upload e gestione di file, tutto senza problemi) perchè non riesco??

:confused:

agenti
21-09-2006, 19:53
1] hai le msxml attive ?

2] prova con send()

Picciola
22-09-2006, 15:03
Dunque, per quanto riguarda la seconda cosa che hai detto, ho provato ma non è cambiato nulla...

Il tuo punto numero 1] invece non mi è molto chiaro, non sono pratica di XML..... :fighet:
Cosa dovrei fare esattamente???

Inoltre ho un'altra domanda: ma è proprio necessario passare da "localhost://ecc... ecc..." anche se le pagine risiedono tutte sul server locale???

:D

Picciola
22-09-2006, 15:10
Un'altra cosa....

Ho fatto anche quest'altra prova sul server locale

'l'url da scaricare
StrURL = "http://www.google.it/"


Set objXMLHTTP = Server.CreateObject("MSXML2.ServerXMLHTTP")
' in caso di problemi, usare il prog-id
' Microsoft.XMLHTTP

objXMLHTTP.Open "GET", StrURL, false

' Richiama il file
objXMLHTTP.Send

' il contenuto
content = CStr(objXMLHTTP.ResponseText)
statuscode = objXMLHTTP.ResponseStatus

Set objxml = Nothing

if CInt(statuscode) = 200 then
Response.write content
else
Response.write "Errore del server remoto: " & statucode
end if


CHIARAMENTE NON FUNZIONA!!!
.... restituisce questo:

Tipo di errore:
Errore di run-time di Microsoft VBScript (0x800A01B6)
Proprietà o metodo non supportati dall'oggetto: 'objXMLHTTP.ResponseStatus'
/ebay/generator/007.asp, line 19


Non so, potrebbe servire a capire la mia penosa situazione?!
:master:

Picciola
22-09-2006, 15:33
Allora, ho fatto un passo in avanti!!!!
Ora ho modificato il codice così (poi non dite che non ho buona volontà....)


pagina="http://localhost/prova/alvolo.asp?art=prova2"

Dim objXMLHttp

'Instanzio l'oggetto XMLHttp
Set objXMLHttp = Server.CreateObject("Msxml2.ServerXMLHTTP.3.0")
'response.Buffer=true
'Costruisco e invio la richiesta
objXMLHttp.Open "GET", pagina, false

objXMLHttp.Send
strHtml = objXMLHttp.responseText
Set FSO = CreateObject("Scripting.FileSystemObject")
sPath = Server.MapPath("prova2.htm")
Set f = FSO.CreateTextFile(sPath,true,0)
f.WriteLine(strHtml)
f.Close
Set f = Nothing
Set FSO = Nothing
set xml = Nothing

'response.Write(strHtml)
response.Write("Pagina generata HTML con successo!")

Così com'è scritto NON FUNZIONA, ma sicuramente l'errore (alla riga rossa "Chiamata di routine o argomento non validi") deriva dal contenuto della variabile strHtml, perchè se sostituisco quella riga con

f.WriteLine("ciao a tutti")

Tutto va alla perfezione.
Così com'è invece crea il file prova2.htm ma non ci scrive nulla dentro.
Se però provo a fare


response.write(strHtml)

Mi scrive tutta la pagina alla perfezione... (fa giusto qualche casino sugli accenti.....)

Che dite, è molto grave?????
:dottò:

agenti
22-09-2006, 15:40
a me sembra che non hai installate le dll di msxml

dovresti fare un test sul tuo pc e vedere se sono attive e se si quale versione.

Cerca su google msxml download
o cerca qui test msxml

ciao

p.s. il path:

pagina="http://localhost/prova/alvolo.asp?art=prova2"

usa il path "naturale"

pagina="alvolo.asp?art=prova2"

sempre se sei dentro la dir "prova"

imente
22-09-2006, 15:42
esegui questa pagina sul server e dicci cosa esce fuori



<%
dim active
On Error Resume Next
active = False
Set xTestObj = Server.CreateObject("Microsoft.XMLHTTP")
If Err = 0 Then active = True
Set xTestObj = Nothing
on error goto 0
response.write "Microsoft.XMLHTTP installato: " & active & "
"

On Error Resume Next
active = False
Set xTestObj = Server.CreateObject("MSXML2.ServerXMLHTTP")
If Err = 0 Then active = True
Set xTestObj = Nothing
on error goto 0
response.write "MSXML2.ServerXMLHTTP installato: " & active & "
"
%>


sono convinto (dato il tuo errore) che dovrebbe darti VERO ma è un primo controllo

----

fatto ciò (dato che penso sia un problema di permessi) prova ad indicare invece che LOCALHOST l'indirizzo esterno al sito (http://www.blabla.../...)

Picciola
22-09-2006, 16:00
Dunque, test eseguito, tutto VERO!...
Il mio 3d sul cambiamento di codice l'avete letto?
Credo che adesso il problema sia sul contenuto della variabile strHTML, che poi è l'intero codice HTML della pagina che vado a leggere...

Mi sto SPREMENDO LE MENINGIIIIII!

agenti
22-09-2006, 16:05
per essere sicuro che la risposta xml è corretta non ti resta che stampare la stessa:



pagina="http://localhost/prova/alvolo.asp?art=prova2"

Dim objXMLHttp

'Instanzio l'oggetto XMLHttp
Set objXMLHttp = Server.CreateObject("Msxml2.ServerXMLHTTP.3.0")
'response.Buffer=true
'Costruisco e invio la richiesta
objXMLHttp.Open "GET", pagina, false

objXMLHttp.Send

if objXMLHTTP.ResponseStatus = 200 then
Response.write objXMLHttp.responseText
else
Response.write "Errore del server remoto"
end if

set objXMLHttp= Nothing

Picciola
25-09-2006, 13:33
Buongiorno!
Sull'ultima prova suggerita da AGENTI ho ricavato un bel:


Tipo di errore:
Errore di run-time di Microsoft VBScript (0x800A01B6)
Proprietà o metodo non supportati dall'oggetto: 'ResponseStatus'
008.asp, line 15

Volevo inoltre aggiornarvi sulle mie scoperte...!
Il problema è proprio nella variabile "strHTML": se la faccio stampare in una textarea me la scrive correttamente:



<%
pagina="http://localhost/prova/alvolo.asp?art=prova2"

Dim objXMLHttp

'Instanzio l'oggetto XMLHttp
Set objXMLHttp = Server.CreateObject("Msxml2.ServerXMLHTTP.3.0")
'response.Buffer=true
'Costruisco e invio la richiesta
objXMLHttp.Open "GET", pagina, false

objXMLHttp.Send
strHtml = objXMLHttp.responseText
Set FSO = CreateObject("Scripting.FileSystemObject")
sPath = Server.MapPath("prova2.htm")
Set f = FSO.CreateTextFile(sPath,true,0)
'f.WriteLine(strHtml)
f.Close
Set f = Nothing
Set FSO = Nothing
set xml = Nothing

'response.Write(strHtml)
response.Write("Pagina generata HTML con successo!")
%>
<textarea name="textarea" cols="150" rows="60"><%=strHtml%></textarea>


Se invece gliela faccio scrivere con f.WriteLine(strHtml) mi dà sempre quell'errore "Chiamata di routine o argomento non validi".

Inoltre, ora che scrivo la variabile nella textarea mi accorgo che sostituisce i caratteri accentati con strane cose.
Per prevenire le vostre risposte sappiate che ho provato tutte queste soluzioni:



1. strHtml = Replace(strHtml,"à","& agrave ;") ecc. ecc.
2. <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
3. UTF-8, UTF-16
4. <%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>


Delle soluzioni adottate nessuna è sembrata funzionare, le lettere accentate e i simboli € mancano sempre, al loro posto punti interrogativi e parole mangiucchiate!!!!!!
Ho trovato pure una roba tipo "AppendChunk objSrvHTTP.responseBody" ma non ho capito come adattarla al mio caso (ecco il 3d (http://forum.html.it/forum/showthread.php?s=&threadid=727669&highlight=caratteri+accentati) )

Insomma.... STO NEI CASINIIIII, AIUTOOOOOOOO!
:cry:

Loading