2016-12-23 3 views
1

내가 URLLIB이 CURL 명령을 변환하려고 URLLIB하는변환 컬은 python3

컬 :

curl -X POST 'http://118.tct.ir/exe/indseane17.pgm' --data 'cmbPro=%CA%E5%D1%C7%E4%0D%0A&pcity=021+++++&lname=%C7%E3%ED%D1%C7%E3%CC%CF%ED&fname=%CD%D3%E4&adrs=&hideme=PZ83M6S2W7' 

URLLIB :

from urllib.request import Request, urlopen 
import urllib 
data = urllib.parse.urlencode({ 
    'cmbPro':'%CA%E5%D1%C7%E4%0D%0A', 
    'pcity':'021+++++', 
    'lname':'%C7%E3%ED%D1%C7%E3%CC%CF%ED', 
    'fname':'%CD%D3%E4&adrs=&hideme=PZ83M6S2W7' 
    }) 
data = data.encode('ascii') 
q = Request('http://118.tct.ir/exe/indseane17.pgm',data=data) 

a = urlopen(q).read() 
print(a) 

하지만 난이 오류가있어 :

HTTPError: HTTP Error 404: Not Found 

하지만 컬링으로 시도하면 잘 작동합니다.

무엇이 문제입니까?

답변

1

문자열 cmbPro=%CA%E5%D1%C7%E4%0D%0A&pcity=021+++++&lname=%C7%E3%ED%D1%C7%E3%CC%CF%ED&fname=%CD%D3%E4&adrs=&hideme=PZ83M6S2W7은 이미 URL 인코딩되어 있으므로 그대로 사용할 수 있습니다. 다음 내용이있는 404은 없습니다.

from urllib.request import Request, urlopen 
import urllib 

data = 'cmbPro=%CA%E5%D1%C7%E4%0D%0A&pcity=021+++++&lname=%C7%E3%ED%D1%C7%E3%CC%CF%ED&fname=%CD%D3%E4&adrs=&hideme=PZ83M6S2W7' 
data = data.encode('ascii') 
q = Request('http://118.tct.ir/exe/indseane17.pgm', data=data) 

a = urlopen(q).read() 
print(a) # <html>...</html>