Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  4 1653
Hei,
Jeg får ikke printet ut HTTP-responsen(annet enn 200 OK) da jeg sender
HEAD-request med programmet under, dvs bruker argumenet HEAD som input.
Det virker om jeg bruker urllib2, men det burde vel også virke med kun httplib og urllib?
Er sikkert en enkel løsning men ser den ikke..

Kode

#!/usr/bin/env python

import urllib
import httplib

name=raw_input('metode:')

head={ }
head['User-Agent']='Mozilla/5.10'
head['Content-Type']='application-x-ww-form-urlencoded'
head['Set-Cookie']='tekst=hvasomhelst45'
head['Accept']='text/html'

tilpass=urllib.urlencode(head)

kobling=httplib.HTTPConnection('www.google.no',80)
kobling.request(name,'/',tilpass)

svar=kobling.getresponse()

print svar.status

print svar.reason

if svar.status == 200 :
	data=svar.read()
	print data

kobling.close()
Avventende
nudo's Avatar
if svar.status == 200:

Du skriver kun ut innholdet fra svar.data dersom svar.status == 200
Er sikkert en enkel løsning men ser den ikke..
Vis hele sitatet...
Den enkle løsningen er og bruke Requests,
løser HTTP på en berede og mer moderne måte.

Kode

>>> import requests
>>> url = 'http://www.google.no'
>>> headers = {'content-type': 'text/plain'}
>>> r = requests.get(url, headers=headers)
>>> r
<Response [200]>
>>> r.status_code
200
>>> r.encoding
'ISO-8859-1'
>>> r.cookies
<RequestsCookieJar[Cookie(version=0, name='NID'........
Trådstarter
7 0
Takk for svarene-men da jeg gir HEAD som input bør ikke info om svarende server(versjon osv) returneres da jeg kjører koden under (omtrent som da man bruker netcat og parameteren HEAD)?

Kode

#!/usr/bin/env python
import urllib
import httplib

name=raw_input('metode:')

head={ }
head['User-Agent']='Mozilla/5.10'
head['Content-Type']='application-x-ww-form-urlencoded'
head['Set-Cookie']='tekst=hvasomhelst45'
head['Accept']='text/html'

tilpass=urllib.urlencode(head)

kobling=httplib.HTTPConnection('www.google.no',80)
kobling.request(name,'/')

svar=kobling.getresponse()

print svar.status

print svar.reason

if svar.status == 200 :
        print 'Header response:'
	data=svar.read()
	print data

kobling.close()
Sist endret av arrowz; 12. mai 2015 kl. 09:07.

Kode

if svar.status == 200 :
        print 'Header response:'
	data=svar.read()
	print data
Sitat av nudo Vis innlegg
if svar.status == 200:

Du skriver kun ut innholdet fra svar.data dersom svar.status == 200
Vis hele sitatet...


Forstod du dette?

KUN hvis respons er ==200 printer den ut "data" Altså vil du kun få ut noe hvis respons er OK.

Dropp f.eks å sjekke på ==200 eller lage elif == "annen status kode".


Så enten:

Kode

if svar.status == 401 :
        print '401 Header response:'
	data=svar.read()
	print data
eller:

Kode

print 'Header response:'
data=svar.read()
print data
Sist endret av Hager; 12. mai 2015 kl. 13:40.