- Home
- Categorie
- Coding e Sistemistica
- Altri linguaggi per il web
- [ASP] Trasformare in htm
-
[ASP] Trasformare in htm
Ciao a tutti, sto' testando questo script e premetto che mi funziona:
<%
Response.Buffer = True
Dim objXMLHTTP, xml
pagina="http://localhost:100/index.asp"
Set xml = Server.CreateObject("Microsoft.XMLHTTP")
xml.Open "GET", pagina, False
xml.Send
strHtml = xml.responseText
Set FSO = CreateObject("Scripting.FileSystemObject")
sPath = Server.MapPath("test1.htm")
Set f = FSO.CreateTextFile(sPath, True)
f.WriteLine(strHtml)
f.Close
Set f = Nothing
Set FSO = Nothing
set xml = Nothing
%>
In pratica mi legge la pagina con XMLHTTP e poi tramite FSO la salva correttamente, solo che io vorrei implementarlo in maniera diversa ovvero, nelle pagine che voglio trasformare in htm (quindi le asp), alla fine metto un response.redirect alla pagina "trasforma.asp"
che contiene lo stesso script di sopra ma con il parametro dell'url e quello del nome pagina come variabili, ovvero così adattato:<%
Dim pagina, NomeFile
Pagina = Session("IndirizzoCompleto")
NomeFile = Session("Classe")
%><%
Response.Buffer = True
Dim objXMLHTTP, xml
'response.write(pagina)
Set xml = Server.CreateObject("Microsoft.XMLHTTP")
xml.Open "GET", pagina, False
xml.Send
strHtml = xml.responseText
Set FSO = CreateObject("Scripting.FileSystemObject")
sPath = Server.MapPath(NomeFile)
'response.write(sPath)
Set f = FSO.CreateTextFile(sPath, True)
f.WriteLine(strHtml)
f.Close
Set f = Nothing
Set FSO = Nothing
set xml = Nothing
%>Ma non mi funziona più, mi si pianta il browser in clessidra :dhò:
-
@O-WK said:
...con il parametro dell'url e quello del nome pagina come variabili ...
Ciao O-WK
credo che il problema sia nel passaggio dei parametri (path e nomi dei file). Quando cerchi di usare i valori della querystring che contengono URL o stringhe di testo assicurati di decodificarle correttamente con la funzione:Server.UrlDecode(request("nome_parametro"))
oppure (se usi variabili di sessione)
Server.UrlDecode(Session("nome_parametro"))Tutto ciò server per decodificare i caratteri speciali che nelle url vengono codificati con sequenze di escape, %, ecc...
-
Ciao e grazie della risposta, se uso server.urldecode mi và in errore esattamente questo:
Object doesn't support this property or method: 'server.urldecode'
Se invece faccio server.urlencode mi sostiusce il . con %2E e logicamente và in errore, aggiungo un altra cosa che lo script fino a che uso XMLHTTP funziona, và in errore la parte in cui uso FSO, ovvero:
<%Dim pagina, NomeFile
Pagina = Session("IndirizzoCompleto")
NomeFile = Session("Classe")
Response.write(pagina)
response.write(NomeFile)%>
<%Response.Buffer = True
Dim objXMLHTTP, xml
'response.write(pagina)
Set xml = Server.CreateObject("Microsoft.XMLHTTP")
xml.Open "GET", pagina, False
xml.Send
strHtml = xml.responseText
'response.write(strHTml)Se qui interrompo il tutto e faccio una response.write di strHtml và tutto bene, a parte alcuni caratteri che mi interpeta male ma che risolvero' dopo, il problema nasce quando tento di salvare la pagina con FSO come sotto:
Set FSO = CreateObject("Scripting.FileSystemObject")
sPath = Server.MapPath(NomeFile)
'response.write(sPath)
Set f = FSO.CreateTextFile(sPath, True)
'response.write(f)
f.Writeline(strHtml)
f.Close
Set f = Nothing
Set FSO = Nothing
set xml = Nothing%>Sto' letteralmente impazzendo
@paocavo said:
Ciao O-WK
credo che il problema sia nel passaggio dei parametri (path e nomi dei file). Quando cerchi di usare i valori della querystring che contengono URL o stringhe di testo assicurati di decodificarle correttamente con la funzione:Server.UrlDecode(request("nome_parametro"))
oppure (se usi variabili di sessione)
Server.UrlDecode(Session("nome_parametro"))Tutto ciò server per decodificare i caratteri speciali che nelle url vengono codificati con sequenze di escape, %, ecc...
-
@O-WK said:
...
Se qui interrompo il tutto e faccio una response.write di strHtml và tutto bene, a parte alcuni caratteri che mi interpreta male ma che risolvero' dopo, il problema nasce quando tento di salvare la pagina con FSO come sotto:...Il problema sta proprio nei "caratteri che mi interpreta male...", quei caratteri "sballati" quando passano all'oggetto FSO generano un errore perchè non sono ammessi nei nomi di file.
Prova a usare la seguente funzione di decodifica dell'URL:
Function URLDecode(str) str = Replace(str, "+", " ") For i = 1 To Len(str) sT = Mid(str, i, 1) If sT = "%" Then If i+2 < Len(str) Then sR = sR & _ Chr(CLng("&H" & Mid(str, i+1, 2))) i = i+2 End If Else sR = sR & sT End If Next URLDecode = sR End Function
-
Ragazzi non esiste uno script tipo mod rewrite con c'è per questo sito in php?
-
Ho risolto in pratica ho dovuto mettere:
<%
Response.Buffer = True
Dim pagina, NomeFile
Pagina = Session("IndirizzoCompleto")
NomeFile = Session("Classe")
Dim objXMLHTTP, xml
Set xml = Server.CreateObject("MSXML2.ServerXMLHTTP.4.0")
xml.Open "GET", pagina, False
xml.Send
strHtml = xml.responseText
Set FSO = CreateObject("Scripting.FileSystemObject")
sPath = Server.MapPath(NomeFile)
Set f = FSO.CreateTextFile(sPath, True)
f.WriteLine(strHtml)
f.Close
Set f = Nothing
Set FSO = Nothing
set xml = Nothing
%>Ora pero' se io richiamo questo script (che ho inserito dentro la pagina trasforma.asp) mediante un link dalla pagina asp che voglio trasformare fila tutto liscio, ma vorrei che si trasformasse in automatico, alla sola apertura della pagina stessa, quindi non appena apro la pagina http://www.miosito.it/home.asp mi si deve creare http://www.miosito.it/home.htm in automatico, ho provato a mettere in fondo ad ogni pagina
<!--#include file="trasforma.asp" -->
Ma dà errore, esattamente questo:
msxml4.dll error 'c00c023f'
This method cannot be called until the send method has been called.
/trasforma.asp, line 11
Alla linea 11 ho:
xml.Send
-
@Boss83 said:
Ragazzi non esiste uno script tipo mod rewrite con c'è per questo sito in php?
Esistono due soluzioni, o usi dei componenti tipo ISAPI_Rewrite, se l'host che hai te lo consente, o fai tutto a mano .... io con tutto che posso usare ISAPI_Rewrite ho optato per farlo a mano, e lo script in questione mi servo proprio a trasformare le asp in html .....
-
ciao parto per il raduno del GT FORUM ,
ci risentiamo Lunedì !!
-
Quindi prendo sto script e poi che devo fa?
-
Function GetUrl(Url)
Dim Http
Set Http = Server.CreateObject("MSXML2.ServerXMLHTTP.4.0")
Http.open "GET",Url,False
Http.Send()
GetUrl = Http.ResponseText
Set Http=Nothing
End Function
-
Function GetUrl(Url) Dim Http Set Http = Server.CreateObject("MSXML2.ServerXMLHTTP.4.0") Http.open "GET",**Server.UrlDecode(Url)**,False Http.Send() GetUrl = Http.ResponseText Set Http=Nothing End Function
-
Mi da il seguente errore:
Tipo di errore:
Errore di run-time di Microsoft VBScript (0x800A01B6)
Proprietà o metodo non supportati dall'oggetto: 'Server.URLDecode'
-
@O-WK said:
Ho risolto in pratica ho dovuto mettere:
<%
Response.Buffer = True
Dim pagina, NomeFile
Pagina = Session("IndirizzoCompleto")
NomeFile = Session("Classe")
Dim objXMLHTTP, xml
Set xml = Server.CreateObject("MSXML2.ServerXMLHTTP.4.0")
xml.Open "GET", pagina, False
xml.Send
strHtml = xml.responseText
Set FSO = CreateObject("Scripting.FileSystemObject")
sPath = Server.MapPath(NomeFile)
Set f = FSO.CreateTextFile(sPath, True)
f.WriteLine(strHtml)
f.Close
Set f = Nothing
Set FSO = Nothing
set xml = Nothing
%>Ora pero' se io richiamo questo script (che ho inserito dentro la pagina trasforma.asp) mediante un link dalla pagina asp che voglio trasformare fila tutto liscio, ma vorrei che si trasformasse in automatico, alla sola apertura della pagina stessa, quindi non appena apro la pagina http://www.miosito.it/home.asp mi si deve creare http://www.miosito.it/home.htm in automatico, ho provato a mettere in fondo ad ogni pagina
<!--#include file="trasforma.asp" -->
Ma dà errore, esattamente questo:
msxml4.dll error 'c00c023f'
This method cannot be called until the send method has been called.
/trasforma.asp, line 11
Alla linea 11 ho:
xml.Send
Succede in quanto trasforma.asp fa un redirect subito dopo xml.send, questo a quanto pare fa fallire il metodo waitForResponse dell'oggetto xml.
C'è una patch mi sembra ma è a pagamento http://66.102.9.104/search?q=cache:xdkddrRhXl4J:www.kbalertz.com/872788/redirected.request.causes.waitForResponse.method.ServerXMLHTTP.class.aspx+"This+method+cannot+be+called+until+the+send+method+has+been+called"+xml+asp&hl=it&ct=clnk&cd=2&gl=it&client=firefox-a
-
@frafa said:
Mi da il seguente errore:
Tipo di errore:
Errore di run-time di Microsoft VBScript (0x800A01B6)
Proprietà o metodo non supportati dall'oggetto: 'Server.URLDecode'@paocavo said:
> Function URLDecode(str) str = Replace(str, "+", " ") For i = 1 To Len(str) sT = Mid(str, i, 1) If sT = "%" Then If i+2 < Len(str) Then sR = sR & _ Chr(CLng("&H" & Mid(str, i+1, 2))) i = i+2 End If Else sR = sR & sT End If Next URLDecode = sR End Function >``` Prima di chiamare la funzione, ti conviene dichiararla