묻고답하기
외부 서버에서 XE 사이트에 글을 쓸 수 있는 방법이 궁금합니다.
2014.05.23 13:33
안녕하세요, 저는 대학교 졸업 프로젝트로 XE 관련 개발을 시도하고 있는 학생입니다.
XE API 개발 관련해서 질문드리고 싶습니다.
정확히 하려는 일을 말씀드리겠습니다.
XE mobile app 을 native 로 만들기 위해서 rest API 를 짜는 중입니다.
이를 위해 가장 중요한 작업이
게시판에 글을 작성하는 요청
일탠데요. rest API 가 django(python web framework)로 작성되고 있기 때문에
(사실 python이라는 언어 자체는 질문의 핵심이 아닙니다. 저는 XE가 어떤 방식으로 작동하는지가 알고 싶습니다.)
다음과 같은 세 가지 방법을 시도했습니다.
첫 번째로, python mechanized library를 이용한 방법입니다.
하지만, xe editor 가 스킨의 html 파일에 존재하는 것이 아니라 javascript로 html 로딩 후에 쓰여지는 것 같습니다. 따라서, 사용이 불가능하다는 생각이 들었습니다.
두 번째로, python urllib, urllib2 를 이용한 방법입니다.
하지만, xe editor 가 POST나 GET 방식으로 글의 제목과 내용을 전송하는 것이 아니라 javascript 로 iframe 안에 있는 내용을 긁어와 AJAX 방식으로 전송하는 것 같아서 직접 javascript 함수를 뜯어보지 않는 이상 힘들 것 같습니다. 안타깝게도 제가 XE에 대해 그리 잘 알고 있지 못하기 때문에 안타깝게도 AJAX 전송이 어디서 이루어지는지 감도 오지 않아 실패했습니다.
크롬 개발자 도구에서
<?xml version="1.0" encoding="utf-8" ?>
<methodCall>
<params>
<_filter><![CDATA[insert]]></_filter>
<error_return_url><![CDATA[/index.php?mid=testboard&act=dispBoardWrite]]></error_return_url>
<act><![CDATA[procBoardInsertDocument]]></act>
<mid><![CDATA[testboard]]></mid>
<content><![CDATA[<p>ADSFASFD</p>]]></content>
<title><![CDATA[ADSFSAFDA]]></title>
<_saved_doc_message><![CDATA[자동 저장된 글이 있습니다. 복구하시겠습니까? 글을 다 쓰신 후 저장하면 자동 저장 본은 사라집니다.]]></_saved_doc_message>
<comment_status><![CDATA[ALLOW]]></comment_status>
<allow_trackback><![CDATA[Y]]></allow_trackback>
<status><![CDATA[PUBLIC]]></status>
<module><![CDATA[board]]></module>
</params>
</methodCall>
Response Headersview source
참고로 가장 처음에 시도한 방식은 DB에 직접 꽂아주는 방식이었는데, 호스팅 사에 따라 외부에서 서버 DB에 직접 접속하는 것을 막아놓는 경우가 많아 위와 같은 방식을 시도하게 되었습니다.
질문은 아래와 같습니다.
혹시 제가 시도한 첫 번째, 두 번째 방식이 실패한 이유가 제가 생각하는 이유가 아니라 다른 이유로 실패한 것이 아닌지 궁금합니다. 또, 만약 XE 전문가 분들이 시도하신다면 어떤 방식으로 시도하실지 여쭤보고 싶습니다. 마지막으로, 두 번째 방식을 마저 시도하기 위해 XE 의 어떤 JS 파일에서 AJAX 전송을 하는지 어떤 input 값들이 넘어가는지 알려면 어느 파일을 집중적으로 봐야 할지 궁금합니다.