Code Example‎ > ‎

JSON


与外部的WebAPI通信时,需要使用JSON格式进行。这里将说明从Flickr里用JSON格式浏览图片的方法。


新建项目

从Eclipse的菜单里选择[New]-[Project],当[New Project]对话框弹出之后,选择"Droidget Wizard"-"project"

config.xml文件的编辑

编辑config.xml,使之可以访问flickr.com。

<?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"  />

这样就只可以访问http://www.example.com了。

新建JavaScript文件

新建一个名为js的文件夹,在里面新建一个名为script.js的文件。

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>

Packaging

接下来将进行packaging。在Eclipse里,选择[Droidget]-[Packaging]

通过USB传送到手机

通过USB接口,将开发用的电脑和手机进行连接,从Eclipse里选择[Droidget]-[Packaging Install]

通过网络传送到手机

为了将完成的FoursquareSample.wgt通过网络传送到手机里,我们需要新建一个下载用的文件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