SSISO Community

시소당

googleAPI를 사용한 간단 application 작성

GoogleAPI는  구글의  기능  몇가지를  이용하도록  하기  위한  API  입니다.

여기서의  기능은  검색,  캐쉬페이지,  추천문구기능이  그것인데요...

  

캐쉬페이지의  경우는  구글의  크롤러(인터넷  모든  사이트를  쑤시고  다니는  프로그램)의  결과  파일을  볼수  있는  기능입니다.

  

내부적으로는  웹서비스  통신을  하도록  되어  있습니다.

  

워낙  단순한  기능만을  제공하므로,  사용방법이  어렵지  않습니다.  API  구조도  단순하구요.

  

지원  언어는  .net과  java  입니다.

  

이를  이용하기  위해서는  요청시에  딸려보내야  하는  사용자  키값이  있어야  합니다.

이는  http://www.google.com/apis/  에  들어가셔서  계정을  만드시면  키값을  메일로  줍니다.

  

간단한  예제도  들어  있으므로  한번  보시면  재미있을  겁니다.

  

저의  경우는  swing을  이용해서  한번  만들어  보았습니다...

오랫만에  코딩을  하니...  재미도  있고  보람도  있네요...

  

swing을  처음  해보는  것이라  여러  튜토리얼을  참조하였구요.

조금  전까지  JTextArea를  이용한  버젼이어서  plain  text로만  결과를  보게  되었었는데요.

1시간을  공을  들여서  이를  JTextPane  버젼으로  바꾸었습니다..

  

AWT보다  훨씬  이쁘고  뽀대도  나는군요..

  

다음은  캡쳐화면입니다.

  

저의  키값을  이용했는데요.  보안상  뒷부분은  지웠습니다..

  

또한  예제에는  별도의  함수로  코딩이  되어  있지  않았습니다.

  

저의  경우는  다음과  같이  코딩을  하였죠.

private  String  callGoogleAPI(String  cmd,  String  key,  String  str)  throws  Exception  {
  GoogleSearch  s  =  new  GoogleSearch();
  System.out.println("cmd:"  +  cmd  +  "  key:"  +  key  +  "  str:"  +  str);
  s.setKey(key);

  String  result  =  null;

  try  {
    if("search".equals(cmd))  {
      s.setQueryString(str);
      GoogleSearchResult  r  =  s.doSearch();
      result  =  r.toString();
    }  else  if("cached".equals(cmd))  {
      byte  []  cachedBytes  =  s.doGetCachedPage(str);
      result  =  new  String(cachedBytes);
    }  else  if("spell".equals(cmd))  {
      result  =  s.doSpellingSuggestion(str);
    }
  }  catch(GoogleSearchFault  f)  {
              System.out.println("The  call  to  the  Google  Web  APIs  failed:");
              System.out.println(f.toString());
  }  catch(Exception  e)  {
              System.out.println("Failed  Exception:");
              System.out.println(e.toString());
  }

  return  result;  
        }

대략  봐도  GoogleSearch/GoogleSearchResult  뿐이죠..

googleAPI를  이용한  간단한  application에  추가작업을  했습니다..

  

이전의  작업은

1.  googleAPI를  테스트할수  있는  application  작성

      Swing  이용,  JTextArea를  이용:  plain  text만을  이용해야  하므로  JTextPane으로  수정함.

  

이었습니다.

  

이전  포스트에서도  언급했듯이,  결과를  조리있게  보여주는  것과.

URL을  링크한  경우  해당  페이지를  띄우는  것이  추가로  해야  할  작업이었습니다.

  

그래서  오늘  작업을  다  했죠...  백수의  장점이  여유있는  시간을  이용해서요..

  

  

작업1.  JTextPane에서  html  이용하기.

오늘에서야  안  사실이지만,  JTextPane  클래스는  이미  html을  표시할수가  있더군요.

일종의  작은  브라우져  역할을  수행한다고  보시면  되겠습니다.

하지만  기능적인  측면이  아주  미비합니다.  복잡한  페이지나  script가  많은  페이지는  제대로  표현을  하지  못합니다.

그러다  보니,  JTextPane에는  결과만을  조리있게  간단한  html  을  이용하여  출력하고.

검색결과의  URL을  클릭하면  이를  별도의  브라우져를  기동하여  보여주는  것으로  결정을  내렸습니다.(혼자  뚝딱  만드는  프로그램이니  순전히  제  맘이죠...)

  

JTextPane의  내부  구조는  EditorKit와  Document,  JTextPane으로  구성이  되어  있습니다.

음  이부분에서는  Document와  View  구조를  이해를  하셔야  합니다...

  

단순히  JTextPane을  생성을  하고,  문자를  찍게  되면  plain  text로  출력이  되게  됩니다.

  

  HTMLEditorKit  htmlKit  =  null;

  HTMLDocument  doc  =  null;

  JTextPane  paneArea  =  null;

  

  htmlKit  =  new  HTMLEditorKit();
  doc  =  (HTMLDocument)htmlKit.createDefaultDocument();
  paneArea  =  new  JTextPane();  
  paneArea.setPreferredSize(new  Dimension(700,  400));
  paneArea.setContentType("text/html");
  paneArea.setDocument(doc);
  paneArea.addHyperlinkListener(listener);
  paneArea.setEditable(false);

  ....

  htmlKit.insertHTML(doc,  doc.getLength(),  "<i>TEST  PAGE~~~</i>",  0,  0,  null);

  위와  같이  해야만이  html로  JTextPane으로  보여집니다..

  

  이를  통하여  결과를  html로  출력을  해보았죠.(이전  버젼은  GoogleSearchResult의  toString  함수의  결과만을  출력했었습니다.)

  

  그  결과는  다음과  같습니다.

  

  

  

작업2.  JTextPane의  링크를  클릭한  경우  브라우져를  해당  페이지로  해서  기동하기.

이는  바로  아래  포스트의  참조를  이용해서  작업을  했습니다.

실제  코드는  단순하죠...

  

하지만  JTextPane의  결과에서  html링크는  기본적으로  제공하지  않습니다.

이를  제공하기  위해서는

  

다음가  같은  코드가  추가되어야  합니다.

  

  HyperlinkListener  listener  =  new  HyperlinkListener()  {
    public  void  hyperlinkUpdate(HyperlinkEvent  e)  {
      if  (e.getEventType()  ==  HyperlinkEvent.EventType.ACTIVATED)  {
        setStdStr("link  clicked!!!!  url:"  +  e.getURL());
        setStdStr("start  IE  url:"  +  e.getURL());
        BrowserControl.displayURL(e.getURL().toString());

      }
    }
  };

  paneArea.addHyperlinkListener(listener);

HyperlinkListener  인터페이스를  이용해서  hyperlinkUpdate  함수를  구현해야  하죠..

  

아래  그림은  실제  URL을  눌렀을때  브라우져가  기동된  화면입니다.

[출처]  googleAPI를  사용한  간단  application  작성  step2|작성자  하자두
http://blog.naver.com/hazard11?Redirect=Log&logNo=80023556714

596 view

4.0 stars