Android平台下用GET获得公开API数据的方法

阅读: 评论:0

Android平台下用GET获得公开API数据的方法

Android平台下用GET获得公开API数据的方法

最近根据同学的建议,编写了一个网络音乐播放器的小项目。主要目的在练习网络相关的内容,其中根据百度音乐公开的API进行网络部分的编写。这就遇到了获取返回JSON数据的问题。很多人都知道,公开的API格式一般是这样的:</span>

;calback=&from=webapp_music&method=baidu.ting.billboard.billList&type=1&size=10&offset=0 

这其中?号之前的是域名,基于http协议,?号之后是参数及参数值,也就是在这个域名里根据各个参数的赋值,服务器将决定返回什么信息。

上面这个API是百度音乐的新歌榜的接口,返回的是JSON数据。因为是GET方法获取的,所以浏览器支持,把以上链接直接复制到浏览器中,就能得到返回的JSON数据。

刚看到这个JSON数据的时候是不是很头大。我刚看到也是醉的一塌糊涂,上千个字符的JSON,怎么写bean文件?没有bean文件怎么解析?赶紧请教大神同学,原来android studio中的Gsonformat插件可以直接根据浏览器中返回的JSON数据自动生成bean文件,简直太方便了(大神们贱笑了)。至于跟我一样也不知道这个插件的童鞋,可以试试,怎么装我就不说了,相信大家都会,不会的肯定也知道百度。

下面言归正传,接着说这个个get方法。最原始的肯定是用输入输出流来进行获得比如一下代码:

下载类 NUtils:

public class NUtils {public interface Callback{//是否取消下载public boolean isCancelled(String url);//下载完成之后,将数据回传public void response(String url, byte[] bytes);}public static class AbsCallback implements Callback{@Overridepublic boolean isCancelled(String url) {// TODO Auto-generated method stubreturn false;}@Overridepublic void response(String url, byte[] bytes) {// TODO Auto-generated method stub}}private static Handler mHandler =new Handler();private static ExecutorService service= wFixedThreadPool(5);public static void get(final String path, final Callback callback) throws UnsupportedEncodingException {Log.e("Get",path);ute(new Runnable() {@Overridepublic void run() {try{HttpURLConnection conn=(HttpURLConnection) new URL(path).openConnection();conn.setRequestProperty("Accept-Charset", "GBK");conn.setRequestProperty("contentType", "GBK");InputStream InputStream();byte[] buffer=new byte[10*1024];int len=-1;ByteArrayOutputStream baos=new ByteArrayOutputStream();ResponseCode()==200){while((ad(buffer))!=-1){baos.write(buffer, 0, len);//判断是否取消if(callback.isCancelled(path)){return;}}final byte[] ByteArray();mHandler.post(new Runnable(){@Overridepublic void run() {// TODO Auto-generated sponse(path, bytes);}});}}catch(Exception e){e.printStackTrace();}}});}
}
调用类:

private void search(String searchstr) throws UnsupportedEncodingException {Log.e("str",searchstr);String path=";calback=&from=webapp_music&method=baidu.ting.search.catalogSug&query="+searchstr;
//        String path=new Bytes("UTF-8"),"iso-8859-1");(path , new NUtils.AbsCallback() {@Overridepublic void response(String url, byte[] bytes) {sponse(url, bytes);String json = new String(bytes);
//                Log.e("json",String());String im();SearchBean bean= ateJsonBean(Json,SearchBean.class);
//                Log.e("bean",String());setSearchBean(bean);}});}

本文发布于:2024-02-03 03:06:54,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170690081248241.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:方法   数据   平台   Android   API
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23