Code Example‎ > ‎

JSON


외부의 WebAPI와의 통신은 JSON포맷을 이용해서 실행하게 됩니다.Flickr로부터 JSON포맷의 이미지 일람을 취득해서 표시하는 방법을 설명하겠습니다.

신규 프로젝트 작성

Eclipse의 메뉴로부터 [New]-[Project]를 선택하고, [New Project]다이얼로그박스에서 "Droidget Wizards"-"project"을 선택합니다.


Config.xml 확인

이번 config.xml은 프로젝트 작성시에 자동 생성된 것을 사용하겠습니다.

<?xml version="1.0" encoding="UTF-8"?>
<widget id="JSONSample_1279501117368" version="1.0" width="600" height="300">
    <content src="index.html" type="text/html"/>
    <name>JSONSample</name>
    <description>The sample of JSON</description>
    <author url="http://www.gclue.jp">GClue</author>
    <icon src="icon.png"/>
    <license></license>
    <access uri="http://flickr.com" subdomains="true" />
</widget>

Droidget에서는 config.xml에 기재하는 access태그로 외부서버에서의 접속 허용을 정의하고 있습니다.

예) example.com에 도메인 단위로 접속 허가를 내는 경우

<access uri="http://example.com" subdomains="true" />

로 기재하면 http://www.example.com, http://www1.example.com 등、example.com도메인의 모든 서버에 접속이 가능하게 됩니다.

예) www.example.com만으로 접속 허가를 내는 경우

<access uri="http://www.example.com"  subdomains="false" />

로 기재하면 http://www.example.com만 접속 허가를 내줍니다.


JavaScript파일 작성

프로젝트의 src폴더에 JavaScript용의 폴더인 js폴더를 작성해서 js폴더 밑에 script.js라는 이름의 파일을 작성합니다.

src/js/script.js
// call JSON
function init(){ 
    var keyword = "android2.2";
    var url = "http://api.flickr.com/services/feeds/photos_public.gne?tags=" + keyword + "&format=json&jsoncallback=%3f";
    json(resultJson, url);

}
 
// callback of JSON
function resultJson(json){

    var resultHtml = "";
    for(var i = 0; i < json.items.length; i++){
        resultHtml += "<img src="+json.items[i].media.m+" height=50>";
    }
    document.getElementById("divMsg").innerHTML = resultHtml;

}
 
// JSON
function json(callback, url){
   
    var http_connect = new XMLHttpRequest();
    http_connect.open("GET", url, true);

    http_connect.onreadystatechange = function() {
        if (http_connect.readyState == 4) {
            if(http_connect.status == 200){
                callback(eval("("+http_connect.responseText+")"));
            }else{
                alert("Can't connect");
            }
        }
    }
    http_connect.send();
} 

index.html파일 편집

Flickr로부터 취득한 이미지 영역을 정의합니다. 

index.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta http-equiv="Content-Style-Type" content="text/css" />
    <meta http-equiv="Content-Script-Type" content="text/javascript" />
    <title>JSON Sample</title>
    <script type="text/javascript" src="js/script.js"></script>
</head>
<body onload="init()">
    <div id="divMsg"></div>
</body>
</html>


패키징

다음은 패키징 작업을 수행합니다. Package Explorer의 JSONSample프로젝트를 클릭한 상태에서 Eclipse의 [Droidget]-[Packaging]을 클릭하여 패키징 작업을 실행합니다.

패키징 작업이 성공하면 JSONSample.wgt파일이 자동으로 생성됩니다.


USB경유한 전송

USB로 개발단말기를 접속해 놓고 Eclipse의 [Droidget]-[Packaging Install]을 클릭하여 전송 및 인스톨 작업을 실행합니다.

Web경유한 전송

완성한 JSONSample.wgt를 Web경유하여 실기에 전송하기 위해서는 download용의 html파일을 작성합니다.

Download.html
<html>
<head>
    <title>Download</title>
</head>
<body>
    <a href="droidget://www.example.com/JSONSample.wgt">JSONSample</a><br>
</body>
</html>


실행결과



※ 본 튜토리얼에서 사용하고 있는 화면은 KDDI/auのIS01의 대기화면을 사용하고 있습니다.
Comments