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.
In diesem Fall wird es meistens im obigen Dokument beschrieben.
Anfragen müssen mit pip installiert werden. In meinem Fall habe ich mit Cygwin (32 Bit) von Windows 10 nachgefragt.
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.
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 Es gibt kein Problem, auch wenn Sie die Protokollzeichenfolge mit set_protcol nach dem Generieren von SampleHTTPclient angeben, indem Sie die URL-Zeichenfolge einschließlich des Protokolls wie http: // angeben. In diesem Fall wird die Einstellung set_protocol ignoriert.
2 Beispielsweise wird ein HTTP 404-Fehler in Bezug auf die Funktion get als Erfolg behandelt. Überprüfen Sie daher bitte das Kommunikationsergebnis mit get_code etc. Gegenwärtig wird der Text auch in diesem Fall in eine Datei geschrieben. Wenn dies unpraktisch ist, entschuldigen wir uns für die Unannehmlichkeiten, aber bitte umgestalten.
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.
Ich habe es unten benutzt. Vielen Dank für die Bereitstellung der wunderbaren Software.
das ist alles.
Recommended Posts