• User

    [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ò:


  • Moderatore

    @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...


  • User

    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...


  • Moderatore

    @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 
    
    

    :ciauz:


  • Bannato User Attivo

    Ragazzi non esiste uno script tipo mod rewrite con c'è per questo sito in php?


  • User

    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


  • User

    @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 .....


  • Moderatore

    ciao parto per il raduno del GT FORUM :yuppi: :yuppi: :yuppi: ,
    ci risentiamo Lunedì !!

    :ciauz:


  • Bannato User Attivo

    Quindi prendo sto script e poi che devo fa?


  • User Newbie

    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


  • Moderatore
    
    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
    
    

    :ciauz:


  • User Newbie

    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'


  • User Attivo

    @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
    😄


  • User Attivo

    @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