Android——百度APIstore+Json——获取新闻频道+新闻数据



package com.example.jreduch08.util;import android.content.Context;import android.os.Environment;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;public class FileUitlity {private static String ROOT_CACHE;private static FileUitlity instance = null;private FileUitlity() {}public static FileUitlity getInstance(Context context,String root_dir) {if (instance == null) {if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {ROOT_CACHE = (Environment.getExternalStorageDirectory() + "/"+ root_dir + "/");} else {ROOT_CACHE = (context.getFilesDir().getAbsolutePath() + "/"+root_dir+"/");}File dir = new File(ROOT_CACHE);if (!dir.exists()) {dir.mkdirs();}instance = new FileUitlity();}return instance;}public File makeDir(String dir) {File fileDir = new File(ROOT_CACHE + dir);if (fileDir.exists()) {return fileDir;} else {fileDir.mkdirs();return fileDir;}}public static String saveFileToSdcard(String fileName,String content){String state = Environment.getExternalStorageState();if(!state.equals(Environment.MEDIA_MOUNTED)){return "SD卡未就绪";}File root = Environment.getExternalStorageDirectory();FileOutputStream fos = null;try {fos = new FileOutputStream(root+"/"+fileName);fos.write(content.getBytes());return "ok";} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} finally {if(fos!=null){try {fos.close();} catch (IOException e) {e.printStackTrace();}}}return "";}}
package com.example.jreduch08.util;import android.util.Log;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;/** * Created by 冲天之峰 on 2016/8/17. */public class HttpUtil {    public static  String HttpGet(String uri){        HttpURLConnection con = null;//为了抛异常        InputStream is = null;        BufferedReader reader=null;        String result=null;        StringBuffer sbf=new StringBuffer();        try {            URL url = new URL(uri);            con = (HttpURLConnection) url.openConnection();            con.setRequestProperty("apikey","5b46143955a4b1ff1b470a94315625cd");            con.setConnectTimeout(5 * 1000);            con.setReadTimeout(5 * 1000);            //http响应码200成功 404未找到 500发生错误            if (con.getResponseCode() == 200) {                is = con.getInputStream();                reader =new BufferedReader(new InputStreamReader(is,"UTF-8"));                String strRead=null;                while ((strRead = reader.readLine())!=null) {                    sbf.append(strRead);                    sbf.append("\r\n");                    Log.d("==j==", "200");                }                reader.close();                result=sbf.toString();                Log.d("=====",result);            }        } catch (MalformedURLException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        } finally {            if (is != null) {                try {                    is.close();                } catch (IOException e) {                    e.printStackTrace();                }            }if (con != null) {                con.disconnect();            }        }        return result;    }    }

package com.example.jreduch08.util;/** * Created by 冲天之峰 on 2016/8/17. */public class UrlUtil {    //获取 频道的网络接口    public static String channelUrl = "http://apis.baidu.com/showapi_open_bus/channel_news/channel_news";    /*获取 频道对应新闻的网络接口      get 请求参数:       channelId    : 新闻频道id,必须精确匹配       channelName  :新闻频道名称,可模糊匹配       title        :新闻标题,模糊匹配       page         :页数,默认1。每页最多20条记       needContent  : 是否需要返回正文,1为需要       needHtml     :是否需要返回正文的html格式,1为需要     */    public static String newsUrl = "http://apis.baidu.com/showapi_open_bus/channel_news/search_news";}

以上是三个工具+方法

package com.example.jreduch08;import android.os.AsyncTask;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.AdapterView;import android.widget.SimpleAdapter;import android.widget.Spinner;import android.widget.TextView;import android.widget.Toast;import com.example.jreduch08.util.HttpUtil;import com.example.jreduch08.util.UrlUtil;import org.json.JSONArray;import org.json.JSONException;import org.json.JSONObject;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;public class HttpJsonActivity extends AppCompatActivity {    private String httpurl;    private TextView tv;    private Spinner channe1;    private SimpleAdapter sa;    private List> channe1List;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_http_json);        tv=(TextView)findViewById(R.id.tv);        channe1=(Spinner)findViewById(R.id.channe1);        channe1List=new ArrayList<>();        sa=new SimpleAdapter(this,channe1List,android.R.layout.simple_spinner_item,                new  String[]{"name"},new int[]{android.R.id.text1});        channe1.setAdapter(sa);        new GetChanel().execute();        channe1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {            @Override            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {                Map map=channe1List.get(position);                String channelName=map.get ("name");                String  channelId=map.get(channelName);                String url=UrlUtil.newsUrl+"?channelId="+channelId                        +"&channerlName="+channelName                        +"&needContent=1"+"&needHtml=1"                        ;               new  GetNew().execute(url);//                tv.setText(channe1.getSelectedItem().toString());//               Toast.makeText(getBaseContext(),"点击了新闻"+position,Toast.LENGTH_SHORT).show();               //   Toast.makeText(getBaseContext(),channe1.getSelectedItemId()+"",Toast.LENGTH_SHORT).show();            }            @Override            public void onNothingSelected(AdapterView<?> parent) {            }        });    }//获取频道    public class GetChanel extends AsyncTask{        @Override        protected String doInBackground(Void... strings) {            return HttpUtil.HttpGet(UrlUtil.channelUrl);        }        @Override        protected void onPostExecute(String s) {            super.onPostExecute(s);     if (s.equals(""))     {         Toast.makeText(getBaseContext(),"没有数据",Toast.LENGTH_SHORT).show();     }            try {                JSONObject obj=new JSONObject(s);                JSONObject body=obj.getJSONObject("showapi_res_body");                JSONArray ja=body.getJSONArray("channelList");                for (int i=0;i{    @Override    protected String doInBackground(String... strings) {        return  HttpUtil.HttpGet(strings[0]);    }    @Override    protected void onPostExecute(String s) {        super.onPostExecute(s);        if (s.equals("")){            tv.setText("没有数据");        }else{        tv.setText(s);}    }}}

<?xml version="1.0" encoding="utf-8"?>                




package com.example.jreduch08;import android.os.AsyncTask;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.util.Log;import android.widget.TextView;import android.widget.Toast;import com.example.jreduch08.util.FileUitlity;import com.example.jreduch08.util.HttpUtil;import com.example.jreduch08.util.UrlUtil;public class APIActivity extends AppCompatActivity {    private  String  httpurl;    private TextView tv;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_api);        tv= (TextView) findViewById(R.id.tv);        httpurl="http://apis.baidu.com/showapi_open_bus/channel_news/channel_news";        new MyGetJson().execute(UrlUtil.channelUrl);    }    //访问网络异步任务类    public class MyGetJson extends AsyncTask {        // onPostExecute在主线程中执行命令        //doInBackground在子线程中执行命令        //doInBackground执行之后会到onPostExecute中        @Override        protected String doInBackground(String... params) {            return HttpUtil.HttpGet(params[0]);        }//            HttpURLConnection con = null;//为了抛异常//            InputStream is = null;//            BufferedReader reader=null;//            String result=null;//            StringBuffer sbf=new StringBuffer();////            try {//                URL url = new URL(httpurl);//                con = (HttpURLConnection) url.openConnection();//                con.setRequestProperty("apikey","5b46143955a4b1ff1b470a94315625cd");//                con.setConnectTimeout(5 * 1000);//                con.setReadTimeout(5 * 1000);//                //http响应码200成功 404未找到 500发生错误//                if (con.getResponseCode() == 200) {//                    is = con.getInputStream();//                    reader =new BufferedReader(new InputStreamReader(is,"UTF-8"));//                    String strRead=null;//                    while ((strRead = reader.readLine())!=null) {//                        sbf.append(strRead);//                        sbf.append("\r\n");//                        Log.d("==j==", "200");//                    }//                    reader.close();//                    result=sbf.toString();//                    Log.d("=====",result);//                }//            } catch (MalformedURLException e) {//                e.printStackTrace();//            } catch (IOException e) {//                e.printStackTrace();//            } finally {//                if (is != null) {//                    try {//                        is.close();//                    } catch (IOException e) {//                        e.printStackTrace();//                    }//                }if (con != null) {//                    con.disconnect();//                }//            }//            return result;//        }        @Override        protected void onPostExecute(String s) {            super.onPostExecute(s);            tv.setText(s);            saveFile(s);            Log.d("==j==", "2");        }    }    //保存文件到SD卡    public  void saveFile(String s) {        Toast.makeText(this, FileUitlity.saveFileToSdcard("/abcdef.txt",s),Toast.LENGTH_SHORT).show();    }//        FileOutputStream fos=null;//        //获取SD卡状态//        String state= Environment.getExternalStorageState();//        //判断SD卡是否就绪//        if(!state.equals(Environment.MEDIA_MOUNTED)){//            Toast.makeText(this,"请检查SD卡",Toast.LENGTH_SHORT).show();//            return;//        }//        //取得SD卡根目录//        File file= Environment.getExternalStorageDirectory();////        try {//            Log.d("=====SD卡根目录:",file.getCanonicalPath().toString());////            File myFile=new File(file.getCanonicalPath()+"/sd.txt");////            fos=new FileOutputStream(myFile);//            //输出流的构造参数1可以是 File对象  也可以是文件路径//            //输出流的构造参数2:默认为False=>覆盖内容;ture=》追加内容//            //追加  ,ture//            fos=new FileOutputStream(file.getCanonicalPath()+"/sdsdsd.txt");//            String  str=s;//            fos.write(str.getBytes());//            Toast.makeText(this,"保存成功",Toast.LENGTH_SHORT).show();//        } catch (IOException e) {//            e.printStackTrace();//        }finally {//            if (fos!=null){//                try {//                    fos.close();//                } catch (IOException e) {//                    e.printStackTrace();//                }//            }//        }//    }}



更多相关文章

  1. Android中Environment,context获取路径
  2. Android常用代码
  3. android中获取通话记录
  4. Android文件夹大小
  5. Android使用自带JSONObject解析JSON数据
  6. Android(安卓)获取播放视频的相关 内容, 分辨率, 方向,作者信息
  7. Android从相机或相册获取图片裁剪
  8. android中如何获取视频时长
  9. android TelephonyManager

随机推荐

  1. 解决TextView中MaxLines与ellipsize=end
  2. Android的多媒体数据库
  3. [Android]自定义View带效果的滚动数字
  4. Android应用安装错误:INSTALL_FAILED_MEDI
  5. Android应用程序资源——Drawable资源概
  6. Android(安卓)Building System 分析
  7. AndroidManifest 中original-package标签
  8. 在Android(安卓)开发中使用Protobuf的实
  9. 在Mac下编译 android 源代码
  10. 【Android】调用Android中的软键盘