public class Page2 extends AppCompatActivity { private static final int MSG_NEW_PIC = 2; private static final int MSG_CACHE_PIC = 1; private static final int ERROR = 3; private static final int EXCEPTION = 4; private EditText mEtUrlPath; private ImageView mIvShow; ListView listView=null; List listData = new ArrayList(); //1.在主线程里面声明消息处理器 handler private Handler handler = new Handler(){ //处理消息的 @Override public void handleMessage(Message msg) { adapter.notifyDataSetChanged(); } }; private ArrayAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.page2_layout); listView = (ListView) findViewById(R.id.lvMovies); adapter = new ArrayAdapter(Page2.this, R.layout.listitems_layout, R.id.tb, listData); listView.setAdapter(adapter); listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Toast.makeText(Page2.this,"TEST",Toast.LENGTH_LONG).show(); } }); } //按钮点击事件 public void click(View view) { EditText mEtUrlPath =(EditText)findViewById(R.id.mEtUrlPath); final String movName=mEtUrlPath.getText().toString(); new Thread(){ @Override public void run() { loginByGet("魔兽"); }; }.start(); } //通过GET方式发送的请求 public void loginByGet(String moName) { try { // 设置请求的地址 通过URLEncoder.encode(String s, String enc) // 使用指定的编码机制将字符串转换为 application/x-www-form-urlencoded 格式 //String spec = "<span>https://api.douban.com//v2/movie/search</span>?q=寒战"; // 根据地址创建URL对象(网络访问的url) URL url = new URL("https://api.douban.com//v2/movie/search?q="+moName); // url.openConnection()打开网络链接 HttpURLConnection urlConnection = (HttpURLConnection) url .openConnection(); urlConnection.setRequestMethod("GET");// 设置请求的方式 urlConnection.setReadTimeout(5000);// 设置超时的时间 urlConnection.setConnectTimeout(5000);// 设置链接超时的时间 // 设置请求的头 urlConnection .setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0"); // 获取响应的状态码 404 200 505 302 if (urlConnection.getResponseCode() == 200) { // 获取响应的输入流对象 InputStream is = urlConnection.getInputStream(); // 创建字节输出流对象 ByteArrayOutputStream os = new ByteArrayOutputStream(); // 定义读取的长度 int len = 0; // 定义缓冲区 byte buffer[] = new byte[1024]; // 按照缓冲区的大小,循环读取 while ((len = is.read(buffer)) != -1) { // 根据读取的长度写入到os对象中 os.write(buffer, 0, len); } // 释放资源 is.close(); os.close(); // 返回字符串 String result = new String(os.toByteArray()); jsonToListView(result); } else { System.out.println("------------------链接失败-----------------"); } } catch (Exception e) { e.printStackTrace(); } } private void jsonToListView(String strJson) { try { //用JSON字符串来初始化一个JSON对象 JSONObject jsonObject = new JSONObject(strJson); //然后读取result后面的数组([]号里的内容),用这个内容来初始化一个JSONArray对象 JSONArray aNews = new JSONArray( jsonObject.getString("subjects") ); for(int i=0; i<aNews.length(); i++) { listData.add(aNews.getJSONObject(i).getString("title")); } handler.sendEmptyMessage(0); } catch(JSONException ex) { Log.e("JSON Error: ", ex.toString()); } } }
JAVA学习笔记--线程请求Json数据,并解析绑定到listView
最新推荐文章于 2022-11-02 11:23:43 发布