412 - Precondition Failed

Résolu/Fermé
xxxinconitoxxx Messages postés 151 Date d'inscription jeudi 25 octobre 2012 Statut Membre Dernière intervention 15 novembre 2015 - 29 sept. 2015 à 17:43
 Utilisateur anonyme - 26 oct. 2015 à 13:15
Bonjours,

Je fais des recherches depuis quelques temps sur une erreur qui m'arrive lorsque j'essaye de télécharger un fichier depuis mon site web (héberger sur https://www.inulogic.fr/ (free-h.org)). Cette erreur est "Precondition Failed", quand j'enlève le http devant mon lien, ça me donne "Impossible de déterminer le format de l'URI.". J'ai fait pas mal de test mais tous sans succès, donc je fais appel à vous pour m'aider à résoudre ce problème, j'ai vu que pleins de personnes anglaises en parle mais bon je n'arrive pas trop à résoudre ce problème malgré mes recherches, voici mon code pour télécharger :

Dl.DownloadFile("http://mc.gamespower.free-h.fr/url.txt", "url.txt")

ou
string modslist = Dl.DownloadString("http://mc.gamespower.free-h.fr/url.txt");
A voir également:

1 réponse

Utilisateur anonyme
29 sept. 2015 à 17:58
Salut,

Quelle bibliothèque utilises tu ? (ou si tu préfère, quel est le type de "Dl")

naga
0
xxxinconitoxxx Messages postés 151 Date d'inscription jeudi 25 octobre 2012 Statut Membre Dernière intervention 15 novembre 2015 164
Modifié par xxxinconitoxxx le 30/09/2015 à 13:14
J'utilise WebClient, excuse moi d'avoir oublié de préciser ^^

Et merci d'avoir répondu ! :P

Edit :

Voilà mon code en entier :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
using System.IO;

namespace MineYCube
{
    class Program
    {

        static WebClient Dl = new WebClient();

        static void Main(string[] args)
        {
            Console.Title = "Téléchargement des ressources pour Minecraft";
            Console.BufferHeight = 30;
            Console.WindowHeight = 30;
            Console.BufferWidth = 100;
            Console.WindowWidth = 100;
            Console.ForegroundColor = ConsoleColor.Green;

            try
            {
                string modslist = Dl.DownloadString("http://mc.gamespower.free-h.fr/url.txt");
                int counter = 0;
                string line;
                
                StreamReader file = new StreamReader(modslist);
                while ((line = file.ReadLine()) != null)
                {
                    Console.WriteLine(line);
                    Download(line);
                    counter++;
                }

                file.Close();
                Console.WriteLine("There were {0} lines.", counter);
                Console.ReadLine();
            }
            catch (Exception e)
            {
                Error(e.Message);
            }
           
        }

        static void Download(string file)
        {
            try
            {
                Console.WriteLine(" Téléchargement de " + file + " ...");

                Dl.DownloadFile("http://mc.gamespower.free-h.fr/mods/" + file, Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\.minecraft\\mods\\" + file);
            }
            catch (Exception e)
            {
                Error(e.Message);
            }
        }

        static void Error(string message)
        {
            Console.Beep();
            Console.ForegroundColor = ConsoleColor.Red;
            Console.Write(" --> " + message + "\n");
            Console.ForegroundColor = ConsoleColor.White;
            Console.Write(" Appuyez sur une touche pour quitter ...");
            Console.ReadKey();
            Environment.Exit(1);
        }
    }
}


Un bout de code est un copier coller oui ^^
0
Utilisateur anonyme
30 sept. 2015 à 13:48
Alors en soit la sytaxe de ton DownloadFile me semble correcte ... ce qui m'etonne un peu c'est le static à la déclaration de ton webClient.

Est ce que tu a vérifier les flux web histoire de comparer les deux ? (perso j utilise fiddler généralement)
0
xxxinconitoxxx Messages postés 151 Date d'inscription jeudi 25 octobre 2012 Statut Membre Dernière intervention 15 novembre 2015 164
30 sept. 2015 à 14:59
Euh .... Je suis débutant en C# donc je n'ai pas très bien compris là mais quand je ne mets pas le static sa me retourne une erreur (avant de compiler) :/
0
j'ai pas de visual studio sous la main, mais je pense que c est ca le soucis. Essaye plutot :



namespace MineYCube
{
class Program
{
static void Main(string[] args)
{
Console.Title = "Téléchargement des ressources pour Minecraft";
Console.BufferHeight = 30;
Console.WindowHeight = 30;
Console.BufferWidth = 100;
Console.WindowWidth = 100;
Console.ForegroundColor = ConsoleColor.Green;

try
{
string modslist ;
using ( WebClient Dl = new WebClient() )
{
modslist = Dl.DownloadString("http://mc.gamespower.free-h.fr/url.txt");
}
int counter = 0;
string line;

StreamReader file = new StreamReader(modslist);
while ((line = file.ReadLine()) != null)
{
Console.WriteLine(line);
Download(line);
counter++;
}

file.Close();
Console.WriteLine("There were {0} lines.", counter);
Console.ReadLine();
}
catch (Exception e)
{
Error(e.Message);
}

}

static void Download(string file)
{
try
{
Console.WriteLine(" Téléchargement de " + file + " ...");

using ( WebClient Dl = new WebClient() )
{
Dl.DownloadFile("http://mc.gamespower.free-h.fr/mods/" + file, Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\.minecraft\\mods\\" + file);
}
}
catch (Exception e)
{
Error(e.Message);
}
}

static void Error(string message)
{
Console.Beep();
Console.ForegroundColor = ConsoleColor.Red;
Console.Write(" --> " + message + "\n");
Console.ForegroundColor = ConsoleColor.White;
Console.Write(" Appuyez sur une touche pour quitter ...");
Console.ReadKey();
Environment.Exit(1);
}
}
}


ce que j ai fait c est retirer cette declaration static (je te laisse rechercher quel en est l utilité) et, vu que tu ne fais que des appels ponctuels qui ne necessitent pas de cookie session etc. on créé l objet à la volé en utilisant l'instruction using (l'objet creer dans le using n existe plus en dehors pour faire simple).

Si ca peut t intéresser j'avais fais une petite surcharge du WebClient pour qu il soit plus facile a utiliser. tu trouvera ma classe ici :
http://codes-sources.commentcamarche.net/source/q=surcharge+webclient&cur=1&url=/

si t as des questions demandes ;)

naga
0
xxxinconitoxxx Messages postés 151 Date d'inscription jeudi 25 octobre 2012 Statut Membre Dernière intervention 15 novembre 2015 164 > Utilisateur anonyme
1 oct. 2015 à 13:22
Merci encore de m'avoir répondu mais malheureusement le problème ne vient pas de C# il vient du serveur web je pense, quand je teste avec un autre hebergeur (gratuit) il fonctionne impeccablement, donc je vais voir avec le support de mon hébergeur je pense, mais merci quand même :P
0