ï¼Tips ãAndroid ã§ JSON ã使ãããã åç·¨ã
ListView ã§ä¸è¦§è¡¨ç¤º
ãæ¬ããã°ã ï¼TipsãTextView ã使ãããªãããã§ TextView ã®è¡¨ç¾æ¹æ³ãããããè¦ã¦ãã¾ããããã£ãããªã®ã§ TextView ãæ´»ç¨ãããä½ããã顿ã«è¨äºãæ¸ããããªãã¨èãè¡ãçããã®ãã ListView ãç¨ããï¼ä½ãããã®ï¼æ
å ±ã®ä¸è¦§è¡¨ç¤ºãã¨ãããã¼ãã
ãããæ¬å½ã¯ãããå°ãæ´¾æãªãã¤ããã¨ãèããã®ã§ãããã¢ãã¡ã¼ã·ã§ã³ããä½ããã¨ãã£ã¦ã¯ã¿ãã®ã§ãããæ´¾æããããããããä½ã«ä½¿ãã®ï¼ãã¨ããæ ¹æ¬çãªçåã¯ææã§ããã»ã»ã»âå´ä¸âã¨ç¸æãã¾ããããã®ç¹ã ListView ã®ä¸è¦§è¡¨ç¤ºã¨ããã®ã¯ä½¿ãæãè±å¯ã§ãå©ç¨é »åº¦ãé«ãåªããè¡¨ç¾æ¹æ³ã ã¨æãã¾ããç¹ã«ã¿ããããã«ã®ã¹ãã¼ããã©ã³ã§ã¯ä¸»è¦ãªæä½ä½ç³»ã®ï¼ã¤ã«ãªã£ã¦ãã¾ãã
ã¾ãã¯ä¸æºåããã»ã»ã»
ãä¸è¦§è¡¨ç¤ºãã¨ããããã«ã¯ãã¾ã表示ãããæ å ±ããäºãæããã°å§ã¾ãã¾ããããã¡ãããèªåã§ç¨æããã¨ããæ¹æ³ãããã¾ããçµæ§é¢åããããã®ã§ããã¾ãã¦ãå¤å°ã®ãè¦ãç®ããæ±ããã«ã¯ç»åã¯å¿ é ãã ããã¨ãã£ã¦ããã¤ã¾ã§ãã R.drawable.icon ï¼ããã¤ãåï¼ãã®ãä¸è©±ã«ã°ãããªã£ã¦ããã®ãè½ãããã¾ããï¼å®ã¯å¾ã ãä¸è©±ã«ãªãã®ã§ããã»ã»ã»ï¼ããã§æãã¤ããã®ã使ãã® Web Service API ãå©ç¨ããã¨ããã¢ã¤ãã¢ãå¥ã®æå³ã§é¢åãªæ°ããã¾ãããã¨ãããããã£ã¦ã¿ããã¨æãã¾ãã
ã©ã® Web Service API ã使ããã»ã»ã»
çµè«ããå
ã«è¨ãã¨ã楽天ã¦ã§ããµã¼ãã¹ãã«ãã¾ãããç¹ã«çç±ã¯ããã¾ããã
å¯ä¸ãæ¥ç¹ããããã¨ããã°ç§ããã¤ã¼ã°ã«ã¹ãã®ãã¡ã³ã ã¨ãããã¨ãããã§ããããï½ ã¾ãå®éã®ã¨ããããã¾ãã¾æåã«ã¯ãªãã¯ããã®ãããã ã£ãã¨ããã ãã®è©±ãªãã§ãããç»åã使ããã¨ãããã¨ã確èªã§ããã®ã§å³æ±ºå®ã§ãï¼æ³¨æã»å©ç¨ã«ã¯ãããããã¼ç»é²ãå¿
è¦ã§ããï¼
ãã¼ã¿ãã©ã¼ãããã鏿ããã»ã»ã»
ãæ¥½å¤©ã¦ã§ããµã¼ãã¹ãã§ã¯ï¼ã¤ã®ãã¼ã¿ãã©ã¼ãããã«å¯¾å¿ãã¦ãã¾ããã REST ãã¨ã JSON ãã§ããã»ã REST ãã¯åãªã XML å½¢å¼ã®ãã¼ã¿ãã©ã¼ãããã
ã»ã JSON ã㯠JSON å½¢å¼ã®ãã¼ã¿ãã©ã¼ãããã
ä»ã¾ã§ JSON å½¢å¼ã®ãã¼ã¿ãã©ã¼ããããæ±ã£ããã¨ãç¡ãã®ã§ããã£ãããªã®ã§è©¦ãã¦ã¿ãããã¨ãããã¨ã§ã JSON ãã«æ±ºå®ããããã¤ãåãã®æ¬¡ã¯ãã¸ã§ã¤ã½ã³åãã®ç»å ´ã§ãããªã«ãå±éºãªé¦ãããã¾ãã»ã»ã»ã
JSON Data Format
ãJSON Data Format ã¨ã¯ã»ã»ã»ã¨ãã£ã¦ã説æããã ãã®ç¥èãããã¾ãããã§ãã®ã§ã JSONãªãã¦æããªãï¼- Think IT - ããã¨ããããã§åã 調ã¹ã¦ã¿ã¦ãã ããããããã JSON å½¢å¼ãã¼ã¿ã®å©ç¨å´ã¨ãã¦ç¥ã£ã¦ãããªããã°ãªããªãç¥èã¯ä½ããªããã®ã¨æãã¾ããããªãã¸ã§ã¯ããã¨ãé åãã¨ããã¼ã¿ãã®ï¼ã¤ãæ¶ããã°å°ãªãã¨ããæ¥½å¤©ã¦ã§ããµã¼ãã¹ããå©ç¨ããä¸ã§ã¯åé¡ããã¾ãããããªãã¸ã§ã¯ããã¨ããã¨å¤§è¢è£ãªæãã§ãããåãªãâ { âã¨â } âã§å²ãããç¯å²ããä¸åºã¾ãï¼ãªãã¸ã§ã¯ãï¼ãã¨å½åãã¦ãã ãã§ããããé åãã¨ãã£ã¦ãâ [ âã¨â ] âã§å²ãããç¯å²ãæãã¦å½åãã¦ããã ãã§ãããã以å¤ã«ç¹ã«ã³ã¬ã¨ãã£ã決ã¾ããå¨ãã¾ãããã§ããããå Web Service æ¯ã«ãã©ããã£ãæ§é ã«ãªã£ã¦ããã®ããã¯ç°ãªã£ã¦ããããã®æ§é ãç¥ãã«ã¯å®éã®ãã¼ã¿ããã¦ã³ãã¼ããè§£æããçè§£ãã以å¤ã«ããã¾ãããéã«è¨ãã°ããããå ¨ã¦ã ã¨ãããã¾ãã
ã§ã¯ãæ©éãã¦ã³ãã¼ããã¦è§£æãã¦ã¿ã¾ãããã
ãæ¥½å¤©ã¦ã§ããµã¼ãã¹ããã JSON å½¢å¼ãã¼ã¿ãåå¾ãè§£æãã
ã©ã®ãããªæ å ±ãæ¬²ããã®ãã»ã»ã»
ãæ¥½å¤©ã¦ã§ããµã¼ãã¹ãã¨ä¸è¨ã§ãã£ã¦ãæ±ã£ã¦ããååã¯å¤æ§ã§ãããããã«å¯¾å¿ãã Web API ãæ§ã ã§ããä»åã¯ç¡é£ãªã¨ããã§ãæ¸ç±ã®å£²ãä¸ã TOP 10 ãã®æ å ±ãåå¾ãã¦è¡¨ç¤ºãããã¨ã¨ãã¾ãã使ç¨ãã API 㯠楽天ããã¯ã¹æ¸ç±æ¤ç´¢API (version:2010-03-18) ãå©ç¨ãã¾ãã
â ãªã¯ã¨ã¹ãURL
http://api.rakuten.co.jp/rws/3.0/json?[parameter]=[value]...
â»JSONPå½¢å¼ã¯ãJSONå½¢å¼ã§å ¥åãã©ã¡ã¼ã¿ã¼ã«callBackãæå®ãããã¨ã§åºåããã¾ãã
ãã£ã¼ã«ãåtitle, author, publisherName, sortã«å¯¾å¿ãã[value]ã¯UTF-8ã§URLã¨ã³ã³ã¼ãããã¦ããå¿ è¦ãããã¾ããï¼ãªã¯ã¨ã¹ãURLå ¨ä½ãã¨ã³ã³ã¼ãããã®ã§ã¯ãªãã[value]é¨åãåå¥ã«ã¨ã³ã³ã¼ããã¦ãã ãããï¼
ãã®ãªã¯ã¨ã¹ãURLã® [parameter]=[value] ã«ãå ¥åãã©ã¡ã¼ã¿ã¼ãã¨ãã¦ç¤ºããã¦ããããã£ã¼ã«ãåããåããåèã«ãã¦å ¶ã æå®ãã¦ããã¾ããã¨ã³ã³ã¼ãã«é¢ãã¦æ³¨ææ¸ããå¨ãã¾ããã Android ã¯ããã©ã«ãã®ã¨ã³ã³ã¼ãã UTF-8 ã§ãã®ã§ç¹ã«æ°ã«ããå¿ è¦ã¯ãªãã§ãããã
ä»å使ããã£ã¼ã«ãåï¼å¤ã¯ã»ã»ã»
| ãã£ã¼ã«ãå(=parameter) | å | å¿ é | å¤(=value) |
|---|---|---|---|
| developerId | String | â |
"?????" |
| operation | String | â |
"BooksBookSearch" |
| version | String | â |
"2010-03-18" |
| size | int |
ã (*1) |
0 |
| hits | int |
10 |
|
| sort | String | "sales" |
注ï¼developerId ã¯å®éã¨ã¯ç°ãªãã¾ããåã
ãåå¾ããIDãç¨ãã¦ãã ããã
ä¸è¨ã®ï¼ã¤ã®ããã£ã¼ã«ãåï¼å¤ãã®ã»ããããâä»åã®âãæ¸ç±ã®å£²ãä¸ã TOP 10 ãã®æ å ±ãå¼ãåºãçºã«å¿ è¦ãªæä½éã® [parameter]=[value] ã®ã»ããã«ãªãã¾ãã
ã¾ãã¯PCã®ãã©ã¦ã¶ã§åå¾ãã¦ã¿ãã»ã»ã»
åãåãããã©ã®æ§ãªãã¼ã¿ãè¿ã£ã¦ããã®ãPCã®ãã©ã¦ã¶ã使ã£ã¦åå¾ãã¦ã¿ã¾ãã
http://api.rakuten.co.jp/rws/3.0/json?developerId=<?????>&operation=BooksBookSearch&version=2010-03-18&size=0&hits=3&sort=sales
æ³¨ï¼ <?????> ã«ã¯ãããããã¼ç»é²ã§å¾ãIDãå
¥ãã¾ãã
ãã©ã¡ã¼ã¿ã¼ã hits ãã®å¤ãï¼ï¼ã§ã¯æ å ±ãå¤ãããã®ã§ãï¼ã«ãã¦ã¿ã¾ãããè¿ã£ã¦ãããã¼ã¿ã¯ä»¥ä¸ã®éãã§ãï¼ãããããã¼IDã¯ä¼ãã¦ãã¾ãï¼
{"Body":{"BooksBookSearch":{"Items":{"Item":[{"contentsKana":"ã³ã ã¸ã㤠ã ã 㪠ã·ããã² ã ã¨ã","limitedFlag":0,"authorKana":"ãªã,ã¨ã¤ã¤ããã¦","booksGenreID":"001001001008","author":"å°¾ç°æ ä¸é","subTitle":"","seriesNameKana":"ã¸ã£ã³ã ã³ããã¯ã¹","title":"ONE PIECEï¼å·»58ï¼","subTitleKana":"","publisherName":"éè±ç¤¾","itemCaption":"","listPrice":"","isbn":"9784088700458","largeImageUrl":"http://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/0887/08870045.jpg?_ex=200x200","mediumImageUrl":"http://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/0887/08870045.jpg?_ex=120x120","titleKana":"ã¯ã³ ãã¼ã¹","availability":"1","postageFlag":0,"salesDate":"2010-06-01","contents":"ãã®æä»£ã®åãâç½ã²ãâã¨å¼ã¶","smallImageUrl":"http://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/0887/08870045.jpg?_ex=64x64","itemPrice":420,"size":"ã³ããã¯","affiliateUrl":"","seriesName":"ã¸ã£ã³ãã»ã³ããã¯ã¹","reviewCount":596,"reviewAverage":4.88,"discountRate":0,"itemUrl":"http://books.rakuten.co.jp/rb/6482061/"},{"contentsKana":"","limitedFlag":0,"authorKana":"ãããã¤,ãã¢ã³","booksGenreID":"001001002005","author":"äºãå®®ç¥å","subTitle":"","seriesNameKana":"ã³ã¦ãã³ã·ã£ ã³ããã¯ã¹ ãã¹","title":"ã®ã ãã«ã³ã¿ã¼ãã¬ï¼ï¼24ï¼ã¢ã³ã³ã¼ã«ãªãã©ç·¨ï¼ï¼","subTitleKana":"","publisherName":"è¬è«ç¤¾","itemCaption":"","listPrice":"","isbn":"9784063407952","largeImageUrl":"http://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/0634/06340795.jpg?_ex=200x200","mediumImageUrl":"http://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/0634/06340795.jpg?_ex=120x120","titleKana":"ããã¡ ã«ã³ã¿ã¼ãã¬","availability":"1","postageFlag":0,"salesDate":"2010-04-01","contents":"","smallImageUrl":"http://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/0634/06340795.jpg?_ex=64x64","itemPrice":440,"size":"ã³ããã¯","affiliateUrl":"","seriesName":"è¬è«ç¤¾ã³ããã¯ã¹kiss","reviewCount":506,"reviewAverage":4.45,"discountRate":0,"itemUrl":"http://books.rakuten.co.jp/rb/6418314/"},{"contentsKana":"","limitedFlag":0,"authorKana":"ã¿ãã¿","booksGenreID":"001010011001","author":"ã¿ãã¿","subTitle":"500kcalã®ã¾ãã·ãå®é£","seriesNameKana":"","title":"ä½èèªè¨ã¿ãã¿ã®ç¤¾å¡é£å ","subTitleKana":"ã´ãã£ãããã«ããªã¼ ã ãã³ã㯠ãã¤ã·ã§ã¯","publisherName":"大忏æ¿","itemCaption":"ã«ããªã¼ãã¦ã³ã®èª¿çã®ã³ãããªã¼ãã³ãã¼ã¹ã¿ã¼ã§æ²¹åã«ããããã¿å¿ãã§ã¾ãã·ãæãè¬å³ã§å³ããã¢ããããã£ããã ãã§å¡©åãã¦ã³ãèãéãéèããã£ã·ãããããã»ããªã¥ã¼ã ãã®ã¾ã¾ã人æ°ç¤¾å¡é£å ã®å®é£ã¬ã·ãï¼ï¼æ¥åã","listPrice":"","isbn":"9784479920250","largeImageUrl":"http://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/4799/47992025.jpg?_ex=200x200","mediumImageUrl":"http://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/4799/47992025.jpg?_ex=120x120","titleKana":"ã¿ã¤ã·ãã¦ã±ã¤ ã¿ãã¿ ã ã·ã£ã¤ã³ ã·ã§ã¯ãã¦","availability":"1","postageFlag":0,"salesDate":"2010-02-01","contents":"","smallImageUrl":"http://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/4799/47992025.jpg?_ex=64x64","itemPrice":1200,"size":"åè¡æ¬","affiliateUrl":"","seriesName":"","reviewCount":694,"reviewAverage":4.33,"discountRate":0,"itemUrl":"http://books.rakuten.co.jp/rb/6333205/"}]},"pageCount":100,"hits":3,"last":3,"count":751821,"page":1,"carrier":0,"first":1}},"Header":{"Status":"Success","Args":{"Arg":{"apiVersion":{"content":true,"value":"30"},"operation":{"content":true,"value":"BooksBookSearch"},"hits":{"content":true,"value":"3"},"sort":{"content":true,"value":"sales"},"developerId":{"content":true,"value":"?????????"},"User-Agent":{"content":true,"value":"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; GTB6.5)"},"size":{"content":true,"value":"0"},"version":{"content":true,"value":"2010-03-18"}}},"StatusMsg":""}}
ç¡äºã«åå¾ã§ãã¾ããã
æ§é ãè§£æããã»ã»ã»
ç´ ã®ã¾ã¾ã§ã¯ãæ§é ãè§£æããã«ãä¸è¦å´ã§ãï½ãããã£ãå ´åã«ã¯ãã¡ããå©ç¨ãã¾ããããã Online JSON Parser ã
注ï¼ãããããã¼IDã¯ä¸è¨ã®ãªã³ã©ã¤ã³ã½ããã§ã®è§£æåã«åé¤or夿´ãã¦ãããã»ããç¡é£ã§ããobject{
"Body": object{
"BooksBookSearch": object{
"Items": object{
"Item": array[
0 object{},
1 object{},
2 object{}
]
}
}
}
"Header": object{
"Args": object{
"Arg": object{
"apiVersion": object{},
"operation": object{},
"hits": object{},
"sort": object{},
"developerId": object{},
"User-Agent": object{},
"size": object{},
"version": object{}
}
}
}
}ä¸è¨ã®ã³ã¼ãã¯ã楽天ã¦ã§ããµã¼ãã¹ãããè¿ããã JSON å½¢å¼ãã¼ã¿ããããã¼ã¿ãè¦ç´ ãé¤ããããªãã¸ã§ã¯ããã¨ãé åãã ããæ¹è¡ãå ãããªã¼ç¶ã«ç¤ºãããã®ã§ããRoot ãªãã¸ã§ã¯ããã"Body"ãªãã¸ã§ã¯ãã¨"Header"ãªãã¸ã§ã¯ãã«åããã¾ãããéè¦ãªã®ã¯"Body"ãªãã¸ã§ã¯ãããä¸ã®é¨åã§ãã"Header"ãªãã¸ã§ã¯ã以ä¸ã¯ç¡è¦ãã¦ãã¾ãã¾ãããããããåãããã¨ã¯ã"Body"ã¨ããåã®ãªãã¸ã§ã¯ãã¯ï¼ã¤ã®"BooksBookSerch"ã¨ããåã®ãªãã¸ã§ã¯ããæã¡ã"BooksBookSerch"ã¨ããåã®ãªãã¸ã§ã¯ãã¯ï¼ã¤ã®"Items"ã¨ããåã®ãªãã¸ã§ã¯ããæã¡ã"Items"ã¨ããåã®ãªãã¸ã§ã¯ãã¯"Item"ã¨ããåã®é åãï¼ã¤æã¡ã"Item"ã¨ããåã®é åã¯âè¤æ°âï¼ãã®å ´åã¯ï¼ã¤ï¼ã®ãªãã¸ã§ã¯ããæã£ã¦ãããã¨ããé¢ä¿ã§ããããã¦ã"Item"é åé ä¸ã®è¤æ°ã®ãªãã¸ã§ã¯ããæã£ã¦ããããã¼ã¿ããä¸åã®æ¬(Book)ã®ååæ å ±ã«ãªãã¾ãã
Android ã§ã楽天ã¦ã§ããµã¼ãã¹ãã® JSON å½¢å¼ãã¼ã¿ãåå¾ããã»ã»ã»
ãããããã¯ãå ·ä½çã« Android ã§ JSON å½¢å¼ãã¼ã¿ãã©ãæ±ã£ã¦ããã®ãããè¦ã¦ããã¾ãã
ã©ã®ããã±ã¼ã¸ã§éä¿¡ãããã»ã»ã»
Android ã§ HTTP éä¿¡ãããå ´åã大ã¾ãã«ï¼ã¤ã®ã¢ããã¼ããããã¾ãã java.net ããã±ã¼ã¸ãä½¿ãæ¹æ³ã¨ org.apache.http.* ããã±ã¼ã¸ãä½¿ãæ¹æ³ã§ãï¼å®ã¯ããï¼ã¤ android.net.http ããã±ã¼ã¸ã¨ãããºããªãªã¢ããããã®ã§ãã AndroidHttpClient ã¨ãã HTTP ã¯ã©ã¤ã¢ã³ãã¯ã©ã¹ã API Level.8 ( Android 2.2 ) ã§ãããç¾ç¶ã§ã¯å®ç¨çã¨ã¯è¨ãã¾ãããç§ã¯ãã¼ã¸ã§ã³ã調ã¹ãããã«ä½¿ããã¨ãã弿°ã® UserAgent ãã©ããããã®ãã¨ããã¼ã ãã¼ã å°ä¸æéæ½°ãã¦ãã¾ãã¾ããã»ã»ã»ï¼ãã©ã¡ãã使ã£ã¦ãæ§ããªãã®ã§ããã Android çã«ã¯ org.apache.http.* ããã¼ã¹ã«éä¿¡ç¨ããã±ã¼ã¸ãæ§ç¯ãå§ãã¦ãããããªã®ã§ï¼ã¨ãããã¨ã¯éã«ãªããªãå¯è½æ§ãé«ãï¼ï¼ï¼åå¼·ãå ¼ãã¦ãã¡ãã使ããã¨ã«ãã¾ãã
ãµã¼ããã JSON å½¢å¼ãã¼ã¿ãåãåºãã»ã»ã»
æåã« URI æååãä½ãã¾ãããã¿æ¸ãã§ãè¯ãã®ã§ããã android.net.Uri.Builder ã¨ããããç¨ã®ã¯ã©ã¹ãããã®ã§ãããã使ãã¾ãã
Class Overview :
An absolute hierarchical URI reference follows the pattern::// ? #
ä¸è¨å¼ç¨æã¯ Uri.Builder ã¯ã©ã¹ã® Class Overview ã«æ¸ããã¦ãããã®ã§ãã<scheme>,<authority>,<absolute path>,<query>,<fragment>,ããããã«å¯¾å¿ããã¡ã½ããã scheme(String), authority(String), path(String), query(String) or appendQueryParameter(String, String), fragment(String) ã¨æã£ã¦ããã®ã§ç¹ã«åé¡ã¯ãªãã§ãããã
ããã§ã¯ãå®éã®ã³ã¼ãã§ URI ã®æååãçæããéç¨ãè¦ã¦ããã¾ãããã
String scheme = "http"; String authority = "api.rakuten.co.jp"; String path = "/rws/3.0/json"; String developerId = "?????????"; String operation = "BooksBookSearch"; String version = "2010-03-18"; String size = "0"; String hits = "10"; String sort = "sales"; Uri.Builder uriBuilder = new Uri.Builder(); uriBuilder.scheme(scheme); uriBuilder.authority(authority); uriBuilder.path(path); uriBuilder.appendQueryParameter("developerId", developerId); uriBuilder.appendQueryParameter("operation", operation); uriBuilder.appendQueryParameter("version", version); uriBuilder.appendQueryParameter("size", size); uriBuilder.appendQueryParameter("hits", hits); uriBuilder.appendQueryParameter("sort", sort); String uri = uriBuilder.toString();
ç¹ã«åé¡ã¯ãªãã¨æãã¾ããææã® String uri = uriBuilder.toString() ã§å¾ãæååããã°ãªã©ã«è¡¨ç¤ºãã¦ç¢ºèªãã¦ã¿ã¦ãã ããããã® URI ã HTTP GET ã§æ¸¡ã㨠JSON å½¢å¼ãã¼ã¿ãè¿ã£ã¦ããã®ã¯æ¢ã«ãã©ã¦ã¶ã§ç¢ºèªæ¸ã¿ã§ããæ©éã Android ä¸ã§åæ§ã®å¦çããã¦ãã¼ã¿ãåãåã£ã¦ã¿ã¾ãããã
HTTP ãµã¼ãã¨éä¿¡ãããã®ã«ç¨ããã¯ã©ã¹ã¯ã HTTP ã¯ã©ã¤ã¢ã³ã ã役㮠org.apache.http.impl.client.DefaultHttpClient ãã HTTP ãªã¯ã¨ã¹ã ã役㮠org.apache.http.client.methods.HttpGet ãã HTTP ã¬ã¹ãã³ã¹ ãå½¹ã®ã¤ã³ã¿ã¼ãã§ã¤ã¹ org.apache.http.HttpResponse çãç¨ãã¾ãã
DefaultHttpClient ã®ã³ã³ã¹ãã©ã¯ã¿ã¯ã»ã»ã»
public DefaultHttpClient ()
HttpGet ã®ã³ã³ã¹ãã©ã¯ã¿ã¯ã»ã»ã»
public HttpGet (String uri)
ã使ãã¾ãããã®å¼æ°ã«å ç¨çæãã URI æååãæ¸¡ãã¾ãã
æ³¨ï¼ HttpGet ã®ããï¼ã¤ã®ã³ã³ã¹ãã©ã¯ã¿ã« public HttpGet (URI uri) ã¨ããã®ãããã®ã§ãããæ¬æ¥ãªããã¡ãã使ãããã¨ãããªã®ã§ãã使 ã使ããªãããã§ããã¾ãæåã¯ã HTTP ã¯ã©ã¤ã¢ã³ãã®çæã§ãã
HttpClient httpClient = new DefaultHttpClient(); HttpParams params = httpClient.getParams(); HttpConnectionParams.setConnectionTimeout(params, 1000); HttpConnectionParams.setSoTimeout(params, 1000);
弿°ãªãã®ã³ã³ã¹ãã©ã¯ã¿ã§ HTTP ã¯ã©ã¤ã¢ã³ããçæã次ããã®ï¼è¡ã®å¦çã¯ã¿ã¤ã ã¢ã¦ãã®è¨å®ããã¦ãã¾ãããã®è¨å®ãããã¨ãããã©ã«ãã®è¨å®å¤ã§å¦çãããï¼å¤åã»ã»ã»ï¼ã®ã§çãã¦ãæ§ããªãã¨æãã¾ããã念ã®ããã
次ã¯ãHTTP ãªã¯ã¨ã¹ãã®çæã§ãã
HttpUriRequest httpRequest = new HttpGet(uri);
ã³ã³ã¹ãã©ã¯ã¿å¼æ°ã® uri ã¯å ç¨ Uri.Builder ã§ä½ã£ãæååã§ãã
次ã¯ããµã¼ãã«ãªã¯ã¨ã¹ããæãã¦ã¬ã¹ãã³ã¹ãåãåãã¾ãã
HttpResponse httpResponse = null; try { httpResponse = httpClient.execute(httpRequest); } catch (ClientProtocolException e) { //ä¾å¤å¦ç } catch (IOException e){ //ä¾å¤å¦ç }
HttpClient#execute() ã¡ã½ããã®å¼æ°ã«ã¯å ç¨çæãã HTTP ãªã¯ã¨ã¹ãã®ã¤ã³ã¹ã¿ã³ã¹ã渡ãã¾ãããã®ã¡ã½ãããå®è¡ãããã¨ã§ãµã¼ãã¨ã®éä¿¡ãéãããæ»ãå¤ã« HTTP ã¬ã¹ãã³ã¹ã®ã¤ã³ã¹ã¿ã³ã¹ãè¿ã£ã¦ãã¾ãã
æ¬¡ã«æ¥ç¶ããããµã¼ãããã®å ¥åã¹ããªã¼ã ãä»ã㦠JSON å½¢å¼ãã¼ã¿ãèªã¿åºãã¾ãã
String json = null; if (httpResponse != null && httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK){ HttpEntity httpEntity = httpResponse.getEntity(); try { json = EntityUtils.toString(httpEntity); } catch (ParseException e) { //ä¾å¤å¦ç } catch (IOException e) { //ä¾å¤å¦ç } finally { try { httpEntity.consumeContent(); } catch (IOException e) { //ä¾å¤å¦ç } } }
å é ã§å®£è¨ããã¦ããæåå夿° json ã¯ãµã¼ãããåãåã£ã JSON å½¢å¼ãã¼ã¿ãæ ¼ç´ããããã®ãã®ã§ããæ¬¡ã«ããµã¼ãã¨ã®æ¥ç¶ãç¡äºã«è¡ãããã®ãã©ãããæ¡ä»¶ã«åå²å¦çããã¾ãã HTTP ã¬ã¹ãã³ã¹ã¤ã³ã¹ã¿ã³ã¹ã null ã§ãªããã¨ãä¸ã¤ã HTTP ã¬ã¹ãã³ã¹ã®ã¹ãã¼ã¿ã¹ã³ã¼ããã 200 (ç¡äºã«éä¿¡æ¥ç¶ãå®äºããäºã示ãï¼ãã§ãããã¨ãæ¡ä»¶ã§ããæ¡ä»¶ãæ´ã£ãã HTTP ã¬ã¹ãã³ã¹ããã¨ã³ãã£ãã£ãåãåºãã¾ãã HttpResponse#getEntity() ãããã§ããæ»ãå¤ã¯ org.apache.http.HttpEntity ã®ã¤ã³ã¹ã¿ã³ã¹ã§ãããã®ã¨ã³ãã£ãã£ã«ã¯ãµã¼ãããã®å ¥åã¹ããªã¼ã ãæ ¼ç´ããã¦ãã¾ããæ¬æ¥ã§ãããããã®å ¥åã¹ããªã¼ã ãåãåºããã¹ããªã¼ã ããé æ¬¡ãã¼ã¿ãèªã¿åºãã¨ããå¦çãå¿ è¦ãªã®ã§ããããã®å¦çãèªåã§ãã£ã¦ãããã¦ã¼ãã£ãªãã£ãåå¨ãã¾ããããã org.apache.http.util.EntityUtils ã® toString() ã¡ã½ããã§ãã弿°ã« HttpEntity ã®ã¤ã³ã¹ã¿ã³ã¹ã渡ãã¨åæã«å ¥åã¹ããªã¼ã ããèªã¿åºããæååãè¿ãã¦ããã¾ãï¼ä¾¿å©ã§ãããï¼ææã« finally ã§ HttpEntity#consumeContent() ãå®è¡ã㦠HttpEntity ã®ãªã½ã¼ã¹ãéæ¾ããçµäºãã¾ããããã§ãjson ã«ã¯ JSON å½¢å¼ã®ãã¼ã¿ãæ ¼ç´ããã¾ãããæ¬å½ã§ããããæ¡ä»¶åå²ã®ããï¼ã¤ãæ¥ç¶ãä¸èª¿ã«çµãã£ããå ´åã®å¦çãæ¸ããªããã°ãªããªãã®ã§ãããããä»åã¯å²æãã¾ãã
ææã«ã»ã»ã»
httpClient.getConnectionManager().shutdown();
ã¨ã HTTP ã¯ã©ã¤ã¢ã³ããçµãããå ¨ã¦ã®å¦çã¯çµäºã§ãã
ãæ¥½å¤©ã¦ã§ããµã¼ãã¹ããã JSON å½¢å¼ãã¼ã¿ãåå¾ã TextView ã«è¡¨ç¤ºãããµã³ãã«ã³ã¼ãã§ãã
public class RakutenRanking extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); String scheme = "http"; String authority = "api.rakuten.co.jp"; String path = "/rws/3.0/json"; String developerId = "????????????"; String operation = "BooksBookSearch"; String version = "2010-03-18"; String size = "0"; String hits = "10"; String sort = "sales"; Uri.Builder uriBuilder = new Uri.Builder(); uriBuilder.scheme(scheme); uriBuilder.authority(authority); uriBuilder.path(path); uriBuilder.appendQueryParameter("developerId", developerId); uriBuilder.appendQueryParameter("operation", operation); uriBuilder.appendQueryParameter("version", version); uriBuilder.appendQueryParameter("size", size); uriBuilder.appendQueryParameter("hits", hits); uriBuilder.appendQueryParameter("sort", sort); String uri = uriBuilder.toString(); HttpClient httpClient = new DefaultHttpClient(); HttpParams params = httpClient.getParams(); HttpConnectionParams.setConnectionTimeout(params, 1000); HttpConnectionParams.setSoTimeout(params, 1000); HttpUriRequest httpRequest = new HttpGet(uri); HttpResponse httpResponse = null; try { httpResponse = httpClient.execute(httpRequest); } catch (ClientProtocolException e) { //ä¾å¤å¦ç } catch (IOException e){ //ä¾å¤å¦ç } String json = null; if (httpResponse != null && httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK){ HttpEntity httpEntity = httpResponse.getEntity(); try { json = EntityUtils.toString(httpEntity); } catch (ParseException e) { //ä¾å¤å¦ç } catch (IOException e) { //ä¾å¤å¦ç } finally { try { httpEntity.consumeContent(); } catch (IOException e) { //ä¾å¤å¦ç } } } httpClient.getConnectionManager().shutdown(); TextView textView = new TextView(this); textView.setText(json); ScrollView scrollView = new ScrollView(this); scrollView.addView(textView); setContentView(scrollView, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); } }
å®è¡ãã¦ã¿ã¾ãã»ã»ã»

JSON å½¢å¼ãã¼ã¿ã表示ããã¾ããã
次åã¯ã»ã»ã»
ãã®ç¶ãã¨ã㦠JSON å½¢å¼ãã¼ã¿ã® Android ä¸ã§ã®æ±ãæ¹ããªã©ãæ¸ãã¾ãã