[Jetzt] Python-Anfänger haben versucht, den HTTP-Client mithilfe von Anforderungen (einschließlich Header-Operation) zu implementieren.

Es tut mir leid, dass ich die Ressourcen jetzt mit dem Material voller Gefühle genutzt habe, Herr Qiit.

Es ist notwendig, beim Ändern verschiedener Web-APIs im Geschäftssystem des Unternehmens zu drücken, daher dachte ich, ich würde es mit Python versuchen. Ich habe vorher mit dem Socket-Objekt kommuniziert, also dachte ich, dass es irgendwie so sein würde.

Während ich einen HTTP-Client basierend auf Socket erstellte, habe ich verschiedene Gugrecas ausprobiert und festgestellt, dass dies anders zu sein scheint. Bei weiteren Untersuchungen kam ich zu dem Schluss, dass es besser wäre, [Anfragen] zu verwenden (https://pypi.python.org/pypi/requests/2.7.0).

Also habe ich vorerst etwas gemacht, das ich einfach bekommen konnte.

Charakteristisch

Über Anfragen

Informationen zur Anfrage

In diesem Fall wird es meistens im obigen Dokument beschrieben.

installieren

Anfragen müssen mit pip installiert werden. In meinem Fall habe ich mit Cygwin (32 Bit) von Windows 10 nachgefragt.

(Referenz) Verwenden von pip mit Cygwin

Die Informationen auf dieser Site waren sehr hilfreich. Danke, Tanao.

Wenn man sich die obige Site ansieht, scheint es, dass es in Cygwin verschiedene Handhabungen rund um pip gab, aber ab dem 18. Juli 2016 scheint Folgendes möglich zu sein, wenn die Umgebung Windows10 / Cygwin32bit, Python2.7 ist.

HTTP-Client-Klassencode

Vorerst habe ich versucht, daraus eine Klasse mit einem erbärmlichen Grund zu machen, mich daran zu erinnern, wie man die Klasse schreibt.

import requests

class SampleHTTPclient:

    def __init__(self, url):
        self.url = url
        self.protocol = ""
        self.error_message = ""
        self.request_headers = None
        self.response_headers = None
        self.status_code = None

    def check_protocol(self):
        # ex
        # if self.protocol = "http://" , self.uri = "hoge.org":
        #  self.url = "http://hoge.org"
        if self.url.find("://") == -1 and len(self.protocol) > 3:
            self.url = self.protocol + self.url

    def set_protocol(self, protocol):
        self.protocol = protocol
        self.check_protocol()

    def set_headers(self, headers):
        self.request_headers = headers

    def get(self, fp):
        try:
            if self.request_headers is None:
                response = requests.get(self.url)
            else:
                response = requests.get(self.url, headers=self.request_headers)
            fp.write(response.content)
        except Exception as ex:
            self.error_message = str(ex)
            return False
        else:
            self.status_code = response.status_code
            self.response_headers = response.headers
            return True

    def get_code(self):
        return self.status_code

    def get_headers(self):
        return self.response_headers

    def get_error_message(self):
        return self.error_message

Die Substanz besteht aus zwei Zeilen, aber ... ich habe es vermasselt. ..

Die Verwendung ist das folgende Bild.

  1. Erstellen Sie zunächst eine Instanz mit URL
  2. Wenn die URL-Daten nicht http: // enthalten, können Sie das Protokoll angeben, das mit set_protocol (* 1) verwendet werden soll.
  3. Wenn ein Header hinzugefügt werden muss, geben Sie das Diktat gemäß Anforderungsspezifikationen in set_headers ein Bitte. Es gibt auch einen Beispielcode unten, auf den Sie auch verweisen können.
  4. Öffnen Sie die Datei mit open im Schreibmodus.
  5. Rufen Sie damit get auf. Sie können Erfolg (True) und Misserfolg (False) mit bool sehen
  6. Wenn die Kommunikation erfolgreich ist, befindet sich der Text in der angegebenen Datei (* 2).
  7. Wenn die Kommunikation erfolgreich ist, können Sie den HTTP-Statuscode mit get_code abrufen.
  8. Wenn die Kommunikation erfolgreich ist, verwenden Sie get_headers [Antwortheader in Form eines in der Anforderungsspezifikation angegebenen Diktats](http://docs.python-requests.org/en/master/user/quickstart/#response- Sie können Header erhalten).
  9. Wenn dies fehlschlägt, können Sie die Fehlermeldung mit get_error_message erhalten.

Codebeispiel, um tatsächlich zu bekommen

Hier ist ein Beispiel für die Verwendung von SampleHTTPclient mit der oben codierten Beschreibung.

print "sample httpc program."

url = "<<Die URL der Ressource, um hierher zu gelangen>>"
headers = {"X-gdaigo_para1": "fujiko", "X-gdaigo-para2":"7890"}
filename = "test.html"
print url, " -> " , filename

httpc = SampleHTTPclient(url);
httpc.set_protocol("http://")
httpc.set_headers(headers)
fp = open(filename, "w")
success = httpc.get(fp)
fp.close()
if success == True:
    headers = httpc.get_headers()
    print "response code=", httpc.get_code()
    for key, value in headers.iteritems():
        print key, ":" , value
    print "success."
else:
    print "httpc:read error\n" , httpc.get_error_message()
    print "error."

print "complete."

Das obige Beispiel ist ein Beispiel für die Erfassung von Ressourcen basierend auf der URL und die Erfassung der Daten als test.html. Der Header wird gesetzt (obwohl er bedeutungslos ist) und das Erfassungsergebnis wird ebenfalls angezeigt. GET scheint so in Ordnung zu sein.

So konnte ich es relativ einfach mit Anfragen machen.

Lizenz

Ich habe es unten benutzt. Vielen Dank für die Bereitstellung der wunderbaren Software.

das ist alles.

Recommended Posts

[Jetzt] Python-Anfänger haben versucht, den HTTP-Client mithilfe von Anforderungen (einschließlich Header-Operation) zu implementieren.
Ich habe versucht, PLSA in Python zu implementieren
Ich habe versucht, Permutation in Python zu implementieren
Ich habe versucht, PLSA in Python 2 zu implementieren
Melden Sie sich mit Anforderungen in Python bei Slack an
Ich habe versucht, ADALINE in Python zu implementieren
Ich habe versucht, PPO in Python zu implementieren
[Python] Deep Learning: Ich habe versucht, Deep Learning (DBN, SDA) ohne Verwendung einer Bibliothek zu implementieren.
Ich habe versucht, TOPIC MODEL in Python zu implementieren
Ich habe versucht, eine selektive Sortierung in Python zu implementieren
Ich habe versucht, Mine Sweeper auf dem Terminal mit Python zu implementieren
Ich habe versucht, Drakues Poker in Python zu implementieren
Ich habe versucht, künstliches Perzeptron mit Python zu implementieren
Schreiben Sie Daten mit dem Python-Anforderungsmodul in KINTONE
Ich habe versucht, SSD jetzt mit PyTorch zu implementieren (Dataset)
Ich habe versucht, mit Python auf Google Spread Sheets zuzugreifen
HTTP-Server und HTTP-Client mit Socket (+ Webbrowser) - Python3
Ich habe versucht, Videos mit der Youtube Data API (Anfänger) zu suchen.
Ich habe versucht, einen eindimensionalen Zellautomaten in Python zu implementieren
Ich habe versucht, die Informationen des Webs mit "Requests" und "lxml" abzurufen.
Ich habe versucht, die Mail-Sendefunktion in Python zu implementieren
Ich habe eine Stoppuhr mit tkinter mit Python gemacht
Python-Anfänger versuchte, bei einem IT-Unternehmen zu praktizieren
Ich habe versucht, das Blackjack of Trump-Spiel mit Python zu implementieren
Ich habe versucht, SSD jetzt mit PyTorch zu implementieren (Modellversion)
Als ich versuchte, mithilfe von Anforderungen in Python zu kratzen, war ich süchtig nach SSLError, also einem Workaround-Memo