Je suis désolé d'avoir utilisé les ressources avec le matériel plein de sentiments maintenant, M. Qiit.
Il est nécessaire de frapper en changeant diverses API Web dans le système métier de l'entreprise, j'ai donc pensé que je l'essayerais avec Python. J'ai déjà fait une communication en utilisant l'objet socket, alors j'ai pensé que ce serait en quelque sorte.
Ainsi, en créant un client HTTP basé sur une socket, j'ai essayé divers gugrecas et j'ai trouvé que cela semblait différent. Après une enquête plus approfondie, je suis arrivé à la conclusion qu'il serait préférable d'utiliser requêtes.
Donc, pour le moment, j'ai fait quelque chose que je pourrais simplement obtenir.
Dans ce cas, il est principalement décrit dans le document ci-dessus.
les requêtes doivent être installées avec pip. Dans mon cas, j'ai vérifié avec Cygwin (32 bits) de Windows 10.
Les informations sur ce site ont été très utiles. Merci, tanao.
En regardant le site ci-dessus, il semble qu'il y ait eu diverses manipulations autour de pip dans Cygwin, mais à partir du 18 juillet 2016, il semble que ce qui suit peut être fait si l'environnement est Windows10 / Cygwin32bit, Python2.7.
Pour le moment, j'ai essayé d'en faire une classe avec une raison pitoyable de me souvenir comment écrire la classe.
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
La substance est de deux lignes, mais ... je me suis trompé. ..
L'utilisation est l'image suivante.
1 Il n'y a pas de problème même si vous spécifiez la chaîne de caractères du protocole avec set_protcol après avoir généré SampleHTTPclient en spécifiant la chaîne de caractères URL incluant le protocole tel que http: //. Dans ce cas, le paramètre set_protocol est ignoré.
2 Par exemple, une erreur HTTP 404 est traitée comme un succès en termes de fonction get. Par conséquent, veuillez vérifier le résultat de la communication avec get_code, etc. Actuellement, même dans ce cas, le corps est écrit dans un fichier. Si cela ne vous convient pas, nous vous prions de nous excuser pour la gêne occasionnée, mais veuillez le remodeler.
Voici un exemple d'utilisation de SampleHTTPclient avec la description ci-dessus codée.
print "sample httpc program."
url = "<<L'URL de la ressource pour y accéder>>"
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."
L'exemple ci-dessus est un exemple d'acquisition de ressources basées sur l'URL et d'acquisition des données sous forme de test.html. L'en-tête est défini (même s'il n'a pas de sens) et le résultat de l'acquisition est également affiché. GET semble être bien comme ça.
J'ai donc pu le faire relativement facilement en utilisant des requêtes.
Je l'ai utilisé ci-dessous. Merci d'avoir fourni le merveilleux logiciel.
c'est tout.
Recommended Posts