2010-08-19 5 views
1

내 코드는 httplib을 사용하여 PHP 페이지에서 CSV 데이터를 가져옵니다. Firefox 또는 Chrome에서 페이지를 열면 데이터가 정상적으로 표시됩니다. 그러나, 내 파이썬 코드로 가져 오려고하면 content-length : 0 및 데이터가없는 헤더가 나타납니다. 이 페이지는이 작업을 수행하는 유일한 페이지입니다 - 동일한 디렉토리의 다른 페이지에서 파이썬 httplib 페칭은 잘 작동합니다. 누군가 내가 뭘 잘못하고 있다고 말할 수 있습니까?파이썬의 urllib에 0의 내용 길이를 반환하는 PHP

코드 :

FILE_LOC = '/core/csv.php' 
argstr = '?type=' + self.type + '&id=' + self.id 
conn = httplib.HTTPConnection(SERVER_ADDRESS) 
conn.request('GET', FILE_LOC + argstr) 
resp = conn.getresponse() 
csvstr = resp.read() 

응답 헤더 :

[('content-length', '0'), ('x-powered-by', 'PHP/5.1.6'), 
('server', 'Apache/2.2.3 (CentOS)'), ('connection', 'close'), 
('date', 'Thu, 19 Aug 2010 21:39:44 GMT'), ('content-type', 'text/html; charset=UTF-8')] 
+1

호출중인 PHP 스크립트를 보지 않고 말할 수 없습니다. 'type' 및'id' 인수에 값이 있다고 1000 % 확실합니까? –

+1

당신의 경우에 무슨 일이 벌어지고 있는지 말하기는 어렵지만, 이런 유형의 문제를 디버깅하는 데 유용한 "wget ​​-S'"가 있습니다. – Adam

답변

1

은 아마도 PHP 스크립트는 HTTPLIB 모듈이 전송되지 않는 일부 HTTP 헤더 또는 헤더를 볼 것으로 예상하고있다. 예를 들어, httplib은 기본적으로 Accept, Accept-Language 또는 User-Agent 헤더를 보내지 않는 것처럼 보입니다. request() 호출에 이들 중 하나 이상을 추가해야 할 수도 있습니다. 그것은 내 첫 번째 추측 이었지만, 적절한 호스트 헤더를 보내는 것 같습니다.

+0

내 생각 엔'Accept' 헤더가 여기 키이지만 OP는'urllib' 작업이 CSV인지 아닌지를 지정하지 않습니다. 'text/csv'는 시도해 보는 것이 좋습니다. – aaronasterling

1

아마 User-Agent 헤더에서 필터링 - 스푸핑을 시도하십시오. 귀하의 파이어 폭스.

파이어 폭스를 사용하여 로컬 Python 서버에 연결하여 전송중인 헤더를 정확히 확인한 다음이를 복제 할 수는 없다.

+1

나는 -1이 아니지만 firebug를 사용하여 파이어 폭스가 보내는 헤더를 확인할 수 있습니다.) 또한 '아마도'대신 '아마도'를 사용하는 것 외에, 왜 이것이 다운 voted인지 확실하지 않습니다. 먼저 확인해야 할 사항이 있습니다. – aaronasterling

+0

ㅎ, 나는 그것을 몰랐다! 유능한. – katrielalex

관련 문제