본문 바로가기

개발자 공개 오픈소스

ASP로 네이버 신디케이션 API 연동 가이드 및 개발 후기

얼마전 제 홈페이지도 네이버 웹문서 검색결과에 노출시켜 보고자

네이버 신디케이션 API 연동작업을 했습니다.

신디케이션 가이드를 참고해서 개발을 완료, 스텐바이 standby 상태로 전환까지 시켰지만,

Working 단계로 전환은 되지 않았습니다.

이유는 네이버측에서 제홈페이지를 메타블로그 사이트로 판정하여 웹문서 검색결과에 노출시켜 줄 수 없다는 답변을 받았습니다.

ㅠ.ㅠ 많이 아쉽네요.. 한번 더 메달렸지만.. 얄짤없었습니다. 결국 포기... 

혹시나 실수로 연동시켜줄까봐 가끔... 신디 상태만 확인해보고 있습니다. ㅋㅋ

같이 확인해 보실래용~




그래서 전 저처럼 신디케이션 때문에 맨땅에 해딩하는 개발자를 위해 제가 겪었던 문제와 해결했던 과정을 좀 정리해 볼려고 합니다.

참고로 저는 ASP로 신디케이션 연동작업을 했습니다. 

신디케이션 연동 작업하시는 개발자님께 조금이나마 보탬이 됐으면 하는 마음입니다. 힘내세요 ^^


신디케이션 연동에 관련된 네이버의 공식사이트는 http://dev.naver.com/openapi/apis/function/syndication 를 참고하세요









신디케이션 연동작업은 두가지만 해주면 됩니다.

1. Ping 전달

2. 그리고 신디케이션 서버가 요청하는 신디케이션 문서전달 



먼저 핑에 관한 이야기부터 해보겠습니다.

알고보면 별거 아닌데... 개발할땐 이게 맞는건지...  제대로 전달이 된건지... 

검색해도 자료도 없고 많이 헤메게 됩니다.

지금도 검색해보면 헤메고 있는 개발자 질문글이 많이 나옵니다. ㅋㅋ


핑은...

우리쪽 서버에서 핑을 보내면 네이버 신디서버의 응답이 아래와 같이 http 200 ok 를 받아야 정상적으로 핑이 전달됐다고 보시면 됩니다.


HTTP/1.1 200 OK 

Date: Fri, 25 Jan 2013 01:53:55 GMT 

Server: Apache/2.2.17 (Unix) mod_ssl/2.2.17 OpenSSL/0.9.8e-fips-rhel5 PHP/5.2.17 

X-Powered-By: PHP/5.2.17 

Content-Length: 0 

Connection: close 

Content-Type: text/html



응답이 없다거나, 200 OK 가 아닌 에러코드가 나온다면 핑이 성공됐다고 할 수 없습니다.






그런데... 문제는 네이버에 공개된 핑전달문 샘플이 문제입니다.



저것데로 보내면 절대 응답을 받을 수 없었습니다. ㅋㅋ 저것때문에 하루종일 삽질했습니다.

검색해도 마땅한 자료를 찾을 수 없었고 

결국 네이버에 오픈된 PHP 연동 소스를 참고해서 답을 찾았습니다.


POST /ping/ HTTP/1.0 

User-Agent: request 

Host: syndication.openapi.naver.com 

Content-Type:application/x-www-form-urlencoded 

Content-Length: 185 


link=http%3A%2F%2Fwww%2Eblogrankey%2Ecom%2Fsyndi%2Fsyndi%5Fecho%2Easp%3Fmodule%3Dsyndication%26act%3DgetSyndicationList%26id%3Dtag%3Awww%2Eblogrankey%2Ecom%2C2013%3Asite%26type%3Dchanel


이렇게 수정을 하고나서야 OK 응답을 받을 수 있었습니다.

제홈페이지에서 신디서버로 핑 보내는 샘플입니다. 

http://www.blogrankey.com/syndi/syndi_ping.asp




그리고 네이버가 공개한 PHP 소스를 보면 줄바꿈을 \r\n 으로 처리가 되어있습니다.

그대로 처리를 해도 200 OK 응답을 받을 수 있지만. 

신디케이션 상태는 no_exist_site 라고만 표시되어서 혹시 전달문에 문제가 있나 고민하다가

아래와 같이 변경했고 그제서야 standby 상태로 전환이 됐는데 

이부분은 전달문의 차이인지...  때마침 그때가 전환될 찰라라 그런건지는 잘 모르겠습니다.

전달문 소스를 공개하니 참고만 해보세요... 


sendStr = "POST /ping/ HTTP/1.0 "                                 & Chr(13) & Chr(10) 

sendStr = sendStr & "User-Agent: request "                                 & Chr(13) & Chr(10) 

sendStr = sendStr & "Host: "&URL&" "                                         & Chr(13) & Chr(10) 

sendStr = sendStr & "Content-Type:application/x-www-form-urlencoded " & Chr(13) & Chr(10) 

sendStr = sendStr & "Content-Length: "&Len(server.urlencode(tt))+5&" "         & Chr(13) & Chr(10) 

sendStr = sendStr & "" & Chr(13) & Chr(10) 

sendStr = sendStr & "link="&server.urlencode(tt)


핑에 관해서는 이만하면 된것 같습니다. ㅋㅋ

쓰고보니 별거없네요..

글이 너무 길어져 두편으로 나눠야겠습니다.

다음 포스트에서 신디케이션 문서전달에 관한 이야기를 해보겠습니다.


궁금하시면 또오세요 ㅋㅋㅋ