|
|
#1 (permalink) |
|
Üyelik Tarihi: 23.07.2000
Yer: İstanbul, Türkiye
Yaş: 25
Mesaj: 1,157
|
python, HTTP POST problemi
import urllib sayfa=urllib.urlopen("http://....").read dedikten sonra gelen sayfadan <form action="xxxx" method="yyyy"> bölümünü çekip, xxxx ve yyyy'yi alıyorum. eğer yyyy=POST ise xxxx'e HTTP POST ile web sayfasının şifresini gönderip dönen cevabı almam lazım. borland c++'da indy paketini kullanarak yapabilirken, python'da nasıl yapacağımı bilmiyorum. yardımcı olabilecek birisi varsa süper makbule geçer. veya en kısasından, bir websayfasına login olup içinde bulunan her linke tıklayabilen bir kod var ise onu da inceleyebilirim.
__________________
@Airties Kablosuz İletişim |
|
|
|
|
|
#2 (permalink) |
|
Üyelik Tarihi: 23.07.2000
Yer: İstanbul, Türkiye
Yaş: 25
Mesaj: 1,157
|
Re: python, HTTP POST problemi
bu sorunla karşılaşan olursa diye yazdığım kodu ekleyeyim.
Kod:
import httplib
ekler = {}
ekler['password'] = 'password';
ekler = urllib.urlencode(ekler)
httplib.HTTPConnection.debuglevel=1
print "şimdi post yapıp gelen başlığı yakalayacağız"
gonderal = urllib.urlopen("xxxx",ekler).read()
print gonderal
__________________
@Airties Kablosuz İletişim Mesaj Atlantis tarafından 02.05.2005 (17:51) yeniden düzenlendi. |
|
|
|
|
|
#3 (permalink) |
|
Üyelik Tarihi: 23.07.2000
Yer: İstanbul, Türkiye
Yaş: 25
Mesaj: 1,157
|
Re: python, HTTP POST problemi
şimdi farklı bir problem çıktı karşıma. sayfaya login olduktan sonra, bir dosya göndermem lazım. ilgili sayfanın web arayüzünden (internet Explorer'dan) post yaparken gönderilen veriyi sniffledim. onu aşağıya ekliyorum.
Kod:
-----------------------------7d512a3120254 Content-Disposition: form-data; name="target" 5 -----------------------------7d512a3120254 Content-Disposition: form-data; name="webUpload"; filename="C:\Files\dosya.bin" Content-Type: application/x-zip-compressed bunun bir yolunu bilen varsa çook sevinirim.
__________________
@Airties Kablosuz İletişim |
|
|
|
|
|
#4 (permalink) |
|
Üyelik Tarihi: 23.07.2000
Yer: İstanbul, Türkiye
Yaş: 25
Mesaj: 1,157
|
Re: python, HTTP POST problemi
biraz kendin çal kendin söyle oldu ama olsun, aynı problemle karşılaşanlar olursa diye gelişmeleri buraya ekliyorum
![]() bir binary dosya'yı post etmek için yukarıdaki veriyi göndermeye çalışıyordum, fakat 1 MB'lik binary dosyayı post etmek için, header datasından sonra, dosyayı binary olarak eklemem gerektiğini gördüm. tabi bir tcp paketinde 1260 byte'lık veri gönderebildiğim için, dosyayı aç, parçala, parçaları sıra sıra pakete ekle,paketi yolla yapmaktansa, bunları yapabilen bir modül kullandım. Clientform modülü için gereki bilgileri şu siteden alabilirsiniz. urllib2 modülü ise python'un standart modüllerinden. HTTP POST sonucu, modülün kendi içerisinde oluşturulan headerlar, tam olarak IE'de ya da Mozilla'da oluşturulan headerlarla aynı olmaması, ve de dosyayı yolladığım cgi'nin bu headerları (özellikle border'ın belirli bir formatta olmasını) istemesi sebebiyle, urllib2.py modülü içerisinde oluşturulan headerları IE'ye göre ayarladım. Kod:
import clientform
import urllib2
xxxx="http://192.168.2.1"
def login_page()
...
def send_file():
print "Dosya GONDERILIYOR..."
request = urllib2.Request(xxxx+"/xxxx.HTML")
response = urllib2.urlopen(request)
forms = ClientForm.ParseResponse(response)
response.close()
form1 = forms[0]
Firmware="firmware.bin"
f=open(Firmware,"rb")
form1.add_file(f, content_type="application/x-zip-compressed", filename=Firmware, name=None, id=None, nr=None)
request2=form1.click("savesetting")
response2 = urllib2.urlopen(request2)
print response2.geturl()
incoming_headers=response2.info() # headers
incoming_data=response2.read() # body
response2.close()
return 1
Connection_Status=loginpage()
if Connection_Status==True :
send_file()
__________________
@Airties Kablosuz İletişim |
|
|
|
| Sponsorlu Bağlantılar | |
|
Zoque.Forum
Reklam
|
|
Zoque'a hoşgeldiniz!