IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Librairie Request (post)


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Cyberdocumentaliste
    Inscrit en
    Janvier 2013
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Cyberdocumentaliste

    Informations forums :
    Inscription : Janvier 2013
    Messages : 79
    Par défaut Librairie Request (post)
    Bonjour, je souhaiterai uploader des documents sur un site directement avec un script en python. pour celà j'ai trouvé ceci : http://docs.python-requests.org/en/l...er/quickstart/

    J'ai déjà effectué quelques tests et j'arrive a me connecter avec mes identifiants cependant quand j'essai d'upload c'est la cata. j'ai deux fichiers a envoyer, puis des valeurs. (sur la version web, sa correspond à des selecteurs.)



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    identifiant = {'username':'admin', 'password':''}
     
    with session() as c:
          c.post(connectUrl, data=identifiant)
          files = {
                'liste': open('bilan21.txt', 'rb'),
                'old_list': open('bilan12.txt', 'rb')
                'download': open('bilan.torrent', 'rb')
          }
          #
          uploadData = {
                'name': 'Liste de 2014',
                'type': '714',
                'annee': '2014'
          }
          request =  c.post(uploadUrl, files=files, data=uploadData)
     
          print(request.text)
          print(request.headers)
          print(request)
    J'ai en retour le code 200 (qui veut dire que tout est ok. Je crois). Quand un upload s'est bien passé, la page m'affiche que tout s'est bien passé et lorsqu'ici j'affiche request.text il m'affiche la page avec le formulaire pour upload.

    Je ne comprend pas pourquoi, pouvez vous m'aider ? Merci


    EDIT:


    j'ai essayé avec http://toolbelt.readthedocs.org/en/latest/user.html


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    m = MultipartEncoder(
          fields={
                'torrent': ('torrent', open('bilan.torrent', 'rb'), 'application/x-bittorrent'), 
                'name': str.encode('bilan')
          }
    )
    u = request.post(uploadUrl, data=m, headers={'Content-Type': m.content_type})
    print(u.text)
    print(u.headers)
    print(u)
    mais j'ai cette erreur:
    UnicodeDecodeError: 'utf-8' codec can't decode byte 0x95 in position 366: invalid start byte

  2. #2
    Membre confirmé
    Homme Profil pro
    Cyberdocumentaliste
    Inscrit en
    Janvier 2013
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Cyberdocumentaliste

    Informations forums :
    Inscription : Janvier 2013
    Messages : 79
    Par défaut
    Toujours pas trouvée, désolé du double post mais je n'ai toujours pas trouvé

  3. #3
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,

    Citation Envoyé par JokerAs Voir le message
    Toujours pas trouvée, désolé du double post mais je n'ai toujours pas trouvé
    Désolé mais vous devriez pouvoir uploader vos documents via "wget" ou "curl".
    Pour faire cela de façon programmatique, il faut connaître le protocole HTTP, la bibliothèque request et savoir programmer en Python.
    Si vous rencontrez des problèmes sans l'illustrer avec un "reproducteur" (i.e. pas un bout de script), pas facile de vous aider.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  4. #4
    Membre confirmé
    Homme Profil pro
    Cyberdocumentaliste
    Inscrit en
    Janvier 2013
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Cyberdocumentaliste

    Informations forums :
    Inscription : Janvier 2013
    Messages : 79
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,



    Désolé mais vous devriez pouvoir uploader vos documents via "wget" ou "curl".
    Pour faire cela de façon programmatique, il faut connaître le protocole HTTP, la bibliothèque request et savoir programmer en Python.
    Si vous rencontrez des problèmes sans l'illustrer avec un "reproducteur" (i.e. pas un bout de script), pas facile de vous aider.

    - W
    Merci pour votre clarification. J'ai commencé le scripting en Python pour un stage et ayant déjà quelques notions en info, je me suis tourné vers de la programmation avec Python.

    Le problème, c'est qu'il faut que j'envoi par l'intermédiaire d'un formulaire présent sur l'intranet d'une des entreprises a qui la boite fait appel, un fichier .torrent qui est créé par un autre service, ainsi que diverses informations et fichiers textes.

    Quand j'utilise la lib request j'arrive facilement a me balader sur le site, j'arrive a utiliser les methodes GET et POST (connexion, garder les sessions, poster un nouveau ticket support) mais lorsque je veux spécifier un fichier en Content (comme vu sur les scripts) j'ai un erreur comme quoi le fichier .torrent n'est pas valide. Je crois qu'il y a une vérification et que les données n'arrivent pas a être transmises intégralement. Il me précise que je fichier envoyé n'est pas valide.

    J'ai essayé de jouer avec le Content-Type, mais rien n'a faire. Le problème pourrait aussi venir du fait qu'il y a certains caractères ASCII (je pense) qui n'arrivent pas a passer (peut-être modifier l'encodage ?).

    Je l'illustre pas exactement avec un "reproducteur" j'utilise seulement ce que je trouve sur la doc et sur les forums. Mais la meilleure façon que ça fonctionne c'est de faire comme écrit dans la doc. M'enfin là ça marche pas trop.

    Je vais essayer de regarder au niveau de wget et cURL mais je pense que se sera pareil, une question de Content-Type. transmettre a la fois un fichier .torrent et de la simple data.

    Merci

  5. #5
    Membre Expert
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 617
    Par défaut
    Et avec FileZilla, ce ne serait pas plus simple ?

  6. #6
    Membre confirmé
    Homme Profil pro
    Cyberdocumentaliste
    Inscrit en
    Janvier 2013
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Cyberdocumentaliste

    Informations forums :
    Inscription : Janvier 2013
    Messages : 79
    Par défaut
    Citation Envoyé par marco056 Voir le message
    Et avec FileZilla, ce ne serait pas plus simple ?
    Je n'ai pas accès au ftp. Le but c'est de centraliser toutes les données sur le serveur de l'entreprise. Juste un intranet avec un formulaire pour l'upload

  7. #7
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Citation Envoyé par JokerAs Voir le message
    Quand j'utilise la lib request j'arrive facilement a me balader sur le site, j'arrive a utiliser les methodes GET et POST (connexion, garder les sessions, poster un nouveau ticket support) mais lorsque je veux spécifier un fichier en Content (comme vu sur les scripts) j'ai un erreur comme quoi le fichier .torrent n'est pas valide. Je crois qu'il y a une vérification et que les données n'arrivent pas a être transmises intégralement. Il me précise que je fichier envoyé n'est pas valide.
    Vous avez 2 sujets.
    1. Les échanges HTTP attendus pour que çà fonctionne.
    2. Leur traduction avec request pour "automatiser" cela par programme.

    Si vous n’êtes pas sûr de 1, pas facile de traduire çà "en programme".

    Je l'illustre pas exactement avec un "reproducteur" j'utilise seulement ce que je trouve sur la doc et sur les forums. Mais la meilleure façon que ça fonctionne c'est de faire comme écrit dans la doc. M'enfin là ça marche pas trop.
    Un reproducteur, c'est un script fonctionnel qui permette de reproduire le problème constaté.
    Pas la peine de se connecter au site Web pour raconter quelle requête HTTP vous voulez construire, montrer comment vous avez essayé de le coder et expliquer je n'arrive pas à positionner tel header, le corps du message n'est pas remplit correctement,...


    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  8. #8
    Membre confirmé
    Homme Profil pro
    Cyberdocumentaliste
    Inscrit en
    Janvier 2013
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Cyberdocumentaliste

    Informations forums :
    Inscription : Janvier 2013
    Messages : 79
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Pas la peine de se connecter au site Web pour raconter quelle requête HTTP vous voulez construire, montrer comment vous avez essayé de le coder et expliquer je n'arrive pas à positionner tel header, le corps du message n'est pas remplit correctement,...
    Le problème c'est que je ne sais pas ce qui est mal fait. J'ai essayé d'utiliser cURL mais j'ai toujours le problème du fichier.

    Je veux créer une requête HTTP avec la méthode POST. Pour celà j'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    curl -X POST --form "message=Mon message" http://localhost/up
    Par contre, je veux une requête qui envoi aussi un fichier. Donc je précise le Content-Type entant que multipart/form-data cependant la requête échoue.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    curl -i -X POST -H "Content-Type: multipart/form-data" -F "name=Bilan" -F "fichier=@file.torrent" http://localhost/u
    Concernant le header, le corps du message ... je ne sais pas trop ce qu'il se passe.

    J'ai en retour ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    HTTP/1.1 100 Continue
     
    HTTP/1.1 200 OK
    Date: Thu, 29 Jan 2015 16:12:09 GMT
    Server: Apache
    X-Powered-By: PHP/5.4.34
    Connection: close
    Transfer-Encoding: chunked
    Content-Type: text/html
    J'ai entendu parlé du Content-length, dois-je aussi le définir dans les paramètres

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. plus (+) remplacé par un espace aprés un post request !
    Par jesslegende dans le forum Langage
    Réponses: 2
    Dernier message: 03/11/2011, 15h12
  2. [1.x] Web Request Post
    Par pittacos dans le forum Symfony
    Réponses: 1
    Dernier message: 27/01/2009, 17h35
  3. [Prototype] New Ajax.Request POST
    Par lola13 dans le forum Bibliothèques & Frameworks
    Réponses: 4
    Dernier message: 05/01/2009, 20h38
  4. Réponses: 7
    Dernier message: 21/12/2007, 12h56
  5. Communication entre servlets via Post Request
    Par fafoula dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 10/12/2007, 10h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo