2010-09-29 33 views
0

Ce code PHP ci-dessous récupère html du serveur A au serveur B. Je l'ai fait pour contourner la politique du même domaine des navigateurs. (JSONP jQuery peut également être utilisé pour y parvenir, mais je préfère cette méthode)Comment puis-je implémenter ma requête curl PHP à Python

<?php 
/* 
    This code goes inside the body tag of server-B.com. 
    Server-A.com then returns a set of form tags to be echoed in the body tag of Server-B 
*/ 
$ch = curl_init(); 
$url = "http://server-A.com/form.php"; 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_HEADER,FALSE); 
curl_exec($ch);  // grab URL and pass it to the browser 
curl_close($ch); // close cURL resource, and free up system resources 
?> 

Comment puis-je atteindre cet objectif en Python? Je suis sûr qu'il y a aussi une implémentation de Curl en Python mais je ne sais pas encore comment le faire.

Répondre

1

Il y a wrappers cURL pour Python, mais la meilleure façon de le faire est d'utiliser urllib2

Notez que votre code en PHP récupère toute la page et imprime. Le code Python équivalent est:

import urllib2 

url = 'http://server-A.com/form.php' 
res = urllib2.urlopen(url) 
print res.read() 
+0

Oui, mais je fait le form.php à la sortie que les balises de formulaire sans le reste du contenu habituel comme en-tête, foote ... juste le formulaire. – r2b2

+1

Si vous contrôlez les deux serveurs, pourquoi avez-vous même besoin d'utiliser cURL? – NullUserException

+0

J'ai seulement le contrôle sur Server-A.com. Server-B.com est hébergé ailleurs et construit sur Django. Je ne peux que demander (et suggérer) au gars à l'autre bout comment il peut récupérer des données de Server-A.com de manière proxy. – r2b2

0

Vous pouvez utiliser Requests library

échantillon Obtenez appel

import requests 

def consumeGETRequestSync(): 
params = {'test1':'param1','test2':'param2'} 
url = 'http://httpbin.org/get' 
headers = {"Accept": "application/json"} 
# call get service with headers and params 
response = requests.get(url, headers = headers,data = params) 
print "code:"+ str(response.status_code) 
print "******************" 
print "headers:"+ str(response.headers) 
print "******************" 
print "content:"+ str(response.text) 

consumeGETRequestSync() 

Vous pouvez consulter ce blog http://stackandqueue.com/?p=75