Nasıl Python kullanarak (PHP) sayfasına bir HTTP POST değeri gönderebilirim?

5 Cevap php

Ben Gönder düğmesine bastığımda 1 metin kutusu olan bir PHP sayfası var ve. My SQL benim veritabanına bu ürün adı depolamak için gidiyor. Benim sorum; o 1 değer sorar Python komut dosyası kullanarak ürün adını gönderebilir / göndermek ve daha sonra benim veritabanına göndermek için benim PHP sayfasını kullanmak mümkün mü? Teşekkürler!

5 Cevap

Urllib ve urllib2 modüllerini kontrol edin.

http://docs.python.org/library/urllib2.html

http://docs.python.org/library/urllib.html

Sadece gerekli veri ile bir istek nesnesi oluşturun. Sonra PHP servis yanıtı okuyun.

http://docs.python.org/library/urllib2.html#urllib2.Request

Test veya python kullanarak web siteleri otomatik, ben dimi kullanmaktan zevk. Kabartılmış tanımlama bilgilerini otomatik olarak yönetir ve HTML formları okumak ve bunları göndermek için bir araçtır.

Eğer bir web sayfasında bir form olsaydı Örneğin, makul aşağıdaki kodu kullanabilirsiniz:

from twill import commands
commands.go('http://example.com/create_product')
commands.formvalue('formname', 'product', 'new value')
commands.submit()

Bu, form yüklenemedi değer doldurun ve iletecek.

I http://www.voidspace.org.uk/python/articles/urllib2.shtml muhtemelen iş için en iyi araçtır urllib2 hakkında iyi bir bilgi kaynağı olması buluyorum.

import urllib
import urllib2

url = 'http://www.someserver.com/cgi-bin/register.cgi'
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
values = {'name' : 'Michael Foord',
          'location' : 'Northampton',
          'language' : 'Python' }
headers = { 'User-Agent' : user_agent }

data = urllib.urlencode(values)
req = urllib2.Request(url, data, headers)
response = urllib2.urlopen(req)
the_page = response.read()

Kodlama aslında urllib kullanılarak yapılır ve bu HTTP POST destekler. Urlencode içine veri aktarmak zorunda GET kullanmak için bir yol vardır.

Aksi isteği tamamlanmış olmayacak, olsa () okumak aramak için unutma.

Evet. urllib2 HTTP istekleri göndermek / oluşturmak için güzel bir Python yoludur.

Eğer sadece urlencode adımı ihmal edilmesi dışında, bir web hizmeti gibi yükü ile bir HTTP POST isteği yapmaya çalışıyorsanız @antileet 'nin prosedürüne Sadece bir zeyilname, bu benzer şekilde çalışır; yani

import urllib, urllib2

payload = """
<?xml version='1.0'?>
<web_service_request>
    <short_order>Spam</short_order>
    <short_order>Eggs</short_order>
</web_service_request>
""".strip()
query_string_values = {'test': 1}
uri = 'http://example.com'

# You can still encode values in the query string, even though
# it's a POST request. Nice to have this when your payload is
# a chunk of text.
if query_string_values:
    uri = ''.join([uri, '/?', urllib.urlencode(query_string_values)])
req = urllib2.Request(uri, data=payload)
assert req.get_method() == 'POST'
response = urllib2.urlopen(req)
print 'Response:', response.read()