2010-11-25 4 views
0

URL (사용자 이름/비밀번호/내용 요법)의 모든 정보가 포함 된 URL을 가지고 있습니다.PHP curl - 브라우저 응답을 통해 URL에 액세스 : 200 curl 응답을 통해 URL에 액세스 : 401?

브라우저에서 URL을 방문하면 성공적인 답변을 얻을 수 있습니다. 나는 컬을 통해 URL을 방문하는 경우

그러나 나는 URL에는 인증이 없습니다 (401)

얻을.

이 문제의 원인은 무엇일까요?

코드 : 이상한

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, 'http://mconnect.co.nz/v1/sendmessage?appname=app&pass=pass&msgclass=test&msgid=6&body=Some+Content&to=02712345678'); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_USERPWD, $mconnect[$index]['app_name'] . ":" . $mconnect[$index]['app_pass']); 
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.12 (KHTML, like Gecko) Chrome/9.0.587.0 Safari/534.12'); 
curl_setopt($ch, CURLOPT_FAILONERROR, true); 
curl_setopt($ch, CURLOPT_HTTPGET, true); 
curl_setopt($ch, CURLOPT_POST, false); 
if(curl_exec($ch) === false) 
    echo 'fail: '.curl_error($ch); 


업데이트 ... ...

그래서,

내가 $ mconnect를 통해 내 URL을 구축하고 [$ 색인 ] [ 'url']. '?' . http_build_query ($ url);

위의 URL을 제공합니다. 그때 echo $mconnect[$index]['url'] . '?' . http_build_query($url);

을 할 경우 내가

$url = $mconnect[$index]['url'] . '?' . http_build_query($url); 
curl_setopt($ch, CURLOPT_URL, $url); 

내가 401

그러나 얻을 수있는 경우

그래서,

,

나는

,691,363를 얻을 수 (210)

http://mconnect.co.nz/v1/sendmessage?appname=app&pass=pass&msgclass=test&msgid=6&body=Some+Content&to=02712345678

그래서 다음

$url = 'http://mconnect.co.nz/v1/sendmessage?appname=app&pass=pass&msgclass=test&msgid=6&body=Some+Content&to=02712345678'; 
    curl_setopt($ch, CURLOPT_URL, $url); 

다음 작동

...

어떤 아이디어를한다면?

+0

을 사용하는 자신의 URL을 구축하는 이유 ? –

+0

방금 ​​추가 코드 – Hailwood

답변

0

같은으로 수정 프로그램은 당신이 당신이하고 있는지 HTTP 포스트/얻을 사용하여 컬을하다 대신 PHP 5의 build_query_string

0

서버가 사용자 에이전트를 확인한 것 같습니다. 브라우저에서 사용하는 것으로 설정해야합니다.

+0

방금 ​​코드를 추가하고, 그래, 나는 그 경우도 될 수 있다고 생각하지만, 아니. – Hailwood

+0

그건 ... 호기심 많은 사용자 에이전트입니다. 여분의 브라우저를 없애보십시오, 그들은 이것을 방지하기 위해 뭔가 재미있는 일을 할 수 있습니다 ... –

+0

그게 구글 크롬 사용자 에이전트. – Hailwood

0

보내는 매개 변수는 POST를 통해 전송해야 할 수도 있습니다.

그리고이 경우 CURLOPT_USERPWD 옵션을 사용할 필요가 없습니다.

+0

는 게시하지 않습니다. 그렇지 않으면 브라우저에서 직접 액세스 할 때 작동하지 않습니다. – Hailwood

+0

세션/쿠키를 사용해야합니다. 쿠키를 지우고 직접 액세스하십시오. 나는 그 시점에서 작동하지 않을거야 내기. –

0

"URL에 인증이 없습니다." 그러나 나는 볼 수

curl_setopt($ch, CURLOPT_USERPWD, $mconnect[$index]['app_name'] . ":" . $mconnect[$index]['app_pass']); 

is not that that authentication?

참고 : 당신은 수동으로 인증 헤더를 설정하십시오이

curl_setopt($ch, CURLOPT_URL, 'http://'.$mconnect[$index]['app_name'] . ":" . $mconnect[$index].'@mconnect.co.nz/v........ 
+0

글쎄, 나는 그것없이, 그리고 그것없이 노력했다. – Hailwood

+0

@hailwood .. 보내고있는 사용자 이름과 암호가 맞습니까? 내가 인증 세부 정보를 보낼 것을 제안하는 대체 방법을 시도하십시오. –

관련 문제