2012-10-16 6 views
1

CURL의 헤더에 문제가 있습니다. 스크립트에 두 부분이 있습니다. 먼저 autentication과 두 번째 요청이 있습니다. 첫 번째 부분은 잘 작동합니다. 결과 코드와 ID가 나타납니다. , 두 번째 부분에서 해당 ID 가진 머리글을 설정하고 머리글에 보낼 수 있지만이 오류 (< HTTP/1.1 401 권한이 부여되지 않음),하지만 지금 firefox (ModifyHeaders) 및 addon 사용하여 tryed헤더의 말림 문제

$postargs = array('username' => 'user', 'password' => 'pass', 'key' => '1234567890'); 
$postargs = json_encode($postargs); 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_POST, TRUE); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/json; charset=utf-8","Accept:application/json, text/javascript, */*; q=0.01")); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $postargs); 
curl_setopt($ch, CURLOPT_URL, "https://ws.com/login"); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 0); 

curl_setopt($ch, CURLOPT_VERBOSE, TRUE); 
$fh = fopen('curl_debug.txt', 'w'); 
curl_setopt($ch, CURLOPT_STDERR, $fh); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);    
$response = curl_exec($ch); 
$a = json_decode($response); 
echo $a->result; 
curl_close($ch); 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "https://ws.com/data"); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array("id : $a->result","dataRequest : name","Content-Type: application/json; charset=utf-8","Accept:application/json, text/javascript, */*; q=0.01")); 
curl_setopt($ch, CURLOPT_VERBOSE, TRUE); 
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0); 
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 0); 
$fh2 = fopen('curl_debug2.txt', 'w'); 
curl_setopt($ch, CURLOPT_STDERR, $fh2); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
$response2 = curl_exec($ch); 
: 지금 응답을 얻을 수 (나는이 소프트웨어에 ID를 잘 살고과 URL에 의해 WS에 접근), 내가 그것을 일어나고 또는 내가 어떻게 고칠 수 있는지 모르겠어요, 여기 코드입니다

스크립트에서 무엇이 잘못 되었습니까? 왜 헤더 (이 경우에는 id)가 스크립트에 의해서가 아니라 ModifyHeaders에 의해 움직이는가?

미리 감사드립니다.

+0

시도 추가 CURLOPT_COOKIEFILE 및 CURLOPT_COOKIEJAR 및 파일 (스크립트에 의해)을 쓰기로 가리 킵니다. 이렇게하면 컬이 세션 쿠키를 거기에 저장할 수 있습니다. – Waygood

+0

페이지가 다른 페이지로 리디렉션되는 경우 CURLOPT_FOLLOWLOCATION을 사용하는 것도 좋습니다. (그리고 레이가 말했듯이 curl_close를 버리십시오.) – Waygood

답변

1

인증 된 컬 연결을 닫고 새 연결을 초기화 한 후 두 번째 요청은 GET 요청입니다. 이것은 완전하고 인증되지 않은 요청입니다. POST에서와 같이 인증 배열을 통과하지 못합니다.

이것 좀 봐 : Can I make more then one request on a curl connection?

+0

Nice, 답장을 보내 주셔서 감사합니다. 내가 일하는 사람을 알려 줄거야! –

+0

나는이 스크립트를 편집하여 curl_close()와 두 번째 curl_ini()를 사용하지 않았다. 그러나 같은 문제에 직면 해있다. curl_multi를 찾고있다. –