2014-12-09 2 views
2

Pubsubhubub를 사용하여 실시간 RSS 피드를 가져 오려고합니다. 그 목적으로 PHP를 사용하고 있습니다.Pubsubhubub가 허브에서 "POST"응답을 얻습니다.

예를 들어 nextextweb에 가입했습니다.

$hub_url = "http://pubsubhubbub.appspot.com/"; 
$callback_url = "http://xx.com/rss/callback.php"; 
$feed = "http://feeds2.feedburner.com/thenextweb"; 
$sub = new Subscriber($hub_url, $callback_url); 
$status = $sub->subscribe($feed); 

나는 허브 반환 코드 (202)를 받고, 그 hub_challenge 및 기타 물건 내 callback.php에 "GET"응답 후. 자습서에서이 번호를 반복하는 방법을 따라 했으므로 허브가 콜백에 대한 업데이트를 푸시 할 수 있습니다.

if ($method == 'GET' && $_GET['hub_mode'] == 'subscribe') { 
$challenge = $_GET['hub_challenge']; 
header('HTTP/1.1 200 "OK"', null, 200); 
header('Content-Type: text/plain'); 
echo $challenge; 
} 

그래서 도전 번호가 표시됩니다. 여기서 문제는 콜백에서 POST 메시지를 처리 ​​할 조건이 있어도 허브에서 다른 메시지를받지 못한다는 것입니다.

else if ($method == 'POST') { 
$updates = json_decode(file_get_contents("php://input"), true); 
//doing stuff with the data here 
} 

문제가 에코 부분 또는 그 이후인지 확실하지 않습니다. 비슷한 문제가있는 사람이 있습니까? 내가 도대체 ​​뭘 잘못하고있는 겁니까?

+0

게시물 처리기의'json_decode'를 제거하십시오. atom/rss 항목을 받아야하므로 문제가 될 수 있습니다. –

+0

문제는 내 callback.php가 다시 호출되지 않는다는 것입니다. 이 조건들이 나오기 전에는 callback.php가 호출 된 시간을 저장하는 코드를 가지고 있으며, 첫 번째 "get"후에 아무 일도 일어나지 않습니다. –

답변

1

방금 ​​문제를 해결했습니다. 분명히 다른 topic_url을 사용하고 있었는데이 링크를 사용하고있었습니다 : http://feeds.feedburner.com/TheBoyGeniusReport?format=xml. 대신 페이지 소스를보고 href 내부의 링크를 사용하고 있는지 확인하십시오. 아래의 강조 표시된 링크는 귀하가 사용하기로되어있는 것입니다.

... XMLNS : atom10 = "http://www.w3.org/2005/Atom"확인해 = "자기"유형 = "응용 프로그램/RSS + XML"HREF = "http://feeds.feedburner.com/TheBoyGeniusReport". ..

관련 문제