Italian [B4J] Download da una cartella di un sito va e da un'altra no

Sabotto

Well-Known Member
Licensed User
Con la mia app scarico dei files che si trovano nella cartella "Livelli" di un mio sito.
Siccome variano ogni tot minuti (sono spediti sul sito da un altro programma) e devo fare delle prove con file fittizi fissi, ho copiato la cartella creandone una nuova chiamata "Livelli1"
Ma se leggo da , tutto ok... mentre se leggo da https://www.miosito/Livelli1 va in errore!
I permessi sono uguali come si vede
Perchè con una funziona e con l'altra no?

problema Livelli.png


L'unica cosa che ho notato, ma non so il perchè, è che se nel browser digito l'url con "Livelli" mi dice:
Forbidden You don't have permission to access this resource.

Mentre se uso l'URL con "Livelli1" risponde:
Nessun risultato - Spiacenti, l'articolo che stai cercando non è disponibile. Vuoi provare ad effettuare una ricerca?

Mi rendo conto che forse B4A centra poco ed è piu roba di webmaster, ma qui ci sono tanti esperti...

Questa è la routine con dati reali (se qualcuno volesse provare)

B4X:
Sub DownloadFile(pSito As String, pNomeFile As String) As ResumableSub
 
    'psito vale "https:\\www.bonificadestrasele.it\Livelli1"
    'pNomeFile vale "Misure Asa.txt"
 
    Dim result As Boolean = False
    Dim NomeFileCompleto As String =  File.Combine(pSito,pNomeFile).Replace(" ","%20")
    Try
        Dim j As HttpJob
        j.Initialize("", Me)
        j.Download(NomeFileCompleto)
        Wait For (j) JobDone(j As HttpJob) ' ==> qui va in errore, se uso "Livelli1" e funziona se uso Livelli
        If j.Success Then
            Dim out As OutputStream = File.OpenOutput(DirDestination, pNomeFile, False)
            'copia il file appena scaricato (j.getInputStream) nel file appena creato (out)
            File.Copy2(j.GetInputStream, out)
            out.Close '<------ very important
            result=True
        End If
        j.Release
    Catch
        Log("Errore in routine DownloadFile " & CRLF & LastException)
        xui.MsgboxAsync ("Errore nello scaricare il file " & pNomeFile & " dal sito!" ,"Errore E4")
        Wait For msgbox_result
    End Try
    Return result

End Sub

L'errore è:

ResponseError. Reason: , Response: <!DOCTYPE html>
<html lang="it-IT" class="html_stretched responsive av-preloader-active av-preloader-enabled html_header_top html_logo_left html_main_nav_header html_menu_right html_custom html_header_sticky html_header_shrinking html_header_topbar_active html_mobile_menu_phone html_header_searchicon html_content_align_center html_header_unstick_top_disabled html_header_stretch_disabled html_av-overlay-side html_av-overlay-side-classic html_av-submenu-noclone av-cookies-no-cookie-consent av-no-preview av-default-lightbox html_text_menu_active av-mobile-menu-switch-default">
<head>
<meta charset="UTF-8" />
<meta name="robots" content="noindex, nofollow" />
<!-- mobile setting -->
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Scripts/CSS and wp_head hook -->
<title>Pagina non trovata &#8211; Consorzio di Bonifica in Destra del Fiume Sele</title>
<meta name='robots' content='noindex, nofollow' />
<style>img:is([sizes="auto" i], [sizes^="auto," i]) { contain-intrinsic-size: 3000px 1500px }</style>
<link rel="alternate" type="application/rss+xml" title="Consorzio di Bonifica in Destra del Fiume Sele &raquo; Feed" href="https://www.bonificadestrasele.it/feed/" />
<link rel="alternate" type="application/rss+xml" title="Consorzio di Bonifica in Destra del Fiume Sele &raquo; Feed dei commenti" href="https://www.bonificadestrasele.it/comments/feed/" />
<script type="text/javascript">
/* <![CDATA[ */
.. ecc ecc ecc
 
Last edited:

Sagenut

Expert
Licensed User
Longtime User
Prova ad aggiungere
B4X:
j.GetRequest.SetHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36")
dopo
B4X:
j.Download(NomeFileCompleto)
 

sirjo66

Well-Known Member
Licensed User
Longtime User
Dopo aver calcolato la variabile NomeFileCompleto prova a mettere
B4X:
Log(NomeFileCompleto)
perchè secondo me hai le barre sbagliate.

Infatti tu scrivi
B4X:
https:\\www.bonificadestrasele.it\Livelli1

e invece dovrebbe essere
B4X:
https://www.bonificadestrasele.it/Livelli1

Altra cosa: con File.Combine se sei con B4A inserisce un "/" tra i due componenti, ma se sei con B4J credo inserisca il "\" perchè dipende dal sistema operativo e quindi anche lì dovresti sistemare con
B4X:
Dim NomeFileCompleto As String =  (pSito & "/" & pNomeFile).As(String).Replace(" ","%20")
 
Last edited:

Sabotto

Well-Known Member
Licensed User
le barre sono giuste / (erano errate nel post.)
Ma.il.problema è che il.codice identico per entrambe, con Livelli funziona e con Livelli1 no.
Se fosse sbagliato non.dovrebbe funzionare nemmeno con Livelli (senza l'1 finale)
 

sirjo66

Well-Known Member
Licensed User
Longtime User
ok, ma il Log che ti ho consigliato io di aggiungere che ti dice ??
Il File.Combine che carattere aggiunge ??
 

Sabotto

Well-Known Member
Licensed User
ok, ma il Log che ti ho consigliato io di aggiungere che ti dice ??
Il File.Combine che carattere aggiunge ??
Ciao. scusami ma ieri sera mi è arrivato il febbrone...
Ho cambiato come mi hai detto ed il Log restituisce ora
B4X:
https://www.bonificadestrasele.it/Livelli1/Misure%20ASA.txt

Ma, come ho gia detto, non credo sia una questione di codice perchè se uso la cartella Livelli, funziona.
Ho preparato un miniprogettino di test, togliendo tutto il superfluo: se qualche buon cuore vuol provare in debug. Ci sono due radiobutton per fare il test con Livelli (che funziona e darà esito positivo) e con Livelli1 (e nel log esce il papiello degli errori).

prova a rinominare la Cartella in Livelliuno, il nr 1 potrebbe dargli fastidio
fatto. niente da fare
 

Attachments

  • Project.zip
    103.5 KB · Views: 0
Top