栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Android 使用Get请求获取网络数据(极速数据)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android 使用Get请求获取网络数据(极速数据)

1、环境配置

android studio 2.3.3
java 16.0.1

1.1、配置Json库

需要准备的jar包:json-lib-2.4-kdj15.jar

第一步:拷贝需要用到的jar包到项目目录的app/libs路径下。
第二步:添加依赖。
方法一:通过界面操作 File->Project Structure->app->Dependencies

添加依赖,在libs中找到需要添加的jar包,依次添加(每次只能添加一个)



方法二: 手动添加compile files(‘libs/commons-beanutils-1.7.0.jar’)

1.2、允许使用网络

需要用到网络,在AndroidMainfest.xml中添加
,位置如下图:

2、极速数据中的接口

周公解梦:https://www.jisuapi.com/api/dream/

网站提供的有java实例

数据返回的格式内容:
提供好的代码:https://www.jisuapi.com/code/dream/,大家可根据需要下载并使用。

3、获取数据

界面




    

    

java代码:
由于android 4 之后,不允许把耗时操作放在主线程中运行,我们在获取网络请求的时候,应该把请求放在线程中进行。下面为线程类的代码:

package com.example.surface.getwebdata;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

import java.net.URLEncoder;

public class MainActivity extends AppCompatActivity {
    private TextView tv_result;
    private Button btn_send;
    private EditText et_keyword;

    class Threads_get extends Thread {
        public static final String APPKEY = " 76de6495d1cce7bc"; // 你的appkey
        public static final String URL = "https://api.jisuapi.com/dream/search";
        public  String keyword = "船"; // utf-8

        public  String Get() throws Exception {
            String result = "";
            keyword = String.valueOf(et_keyword.getText());
            String url = URL + "?appkey=" + APPKEY + "&keyword=" + URLEncoder.encode(keyword, "utf-8");

            try {
                result = HttpUtil.sendGet(url, "utf-8");
                JSONObject json = JSONObject.fromObject(result);
                if (json.getInt("status") != 0) {
                    System.out.println(json.getString("msg"));
                } else {
                    result = "";
                    JSONArray resultarr = json.optJSONArray("result");
                    for (int i = 0; i < resultarr.size(); i++) {
                        JSONObject obj = (JSONObject) resultarr.opt(i);
                        String name = obj.getString("name");
                        String content = obj.getString("content");
                        result = result + name + content;
                        System.out.println(name + " " + content);
                    }
                    return result;
                }
            } catch (Exception e) {
                e.printStackTrace();
                return result;
            }
            return result;
        }
        @Override
        public void run() {
            try {
                setUi_get(Get());
                // tv_result.setText(Get());
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tv_result = (TextView)findViewById(R.id.tv_result);
        btn_send = (Button)findViewById(R.id.btn_send);
        et_keyword = (EditText)findViewById(R.id.et_keyword);
        btn_send.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Threads_get se = new Threads_get();
                se.start();
            }
        });
    }

运行结果:点击一次发送,界面没有反应,第二词点击发送按钮,有结果显示。分析原因:数据正常获取后,没有及时刷新到页面上。

4、在界面中实时显示结果

请求到的数据,使用匿名内部类,实现runOnUiThread中的run方法,在run方法中设置界面显示的内容。

public class MainActivity extends AppCompatActivity {
    private TextView tv_result;
    private Button btn_send;
    private EditText et_keyword;

    class Threads_get extends Thread {
        public static final String APPKEY = " 76de6495d1cce7bc"; // 你的appkey
        public static final String URL = "https://api.jisuapi.com/dream/search";
        public  String keyword = "船"; // utf-8

        public  String Get() throws Exception {
            String result = "";
            keyword = String.valueOf(et_keyword.getText());
            String url = URL + "?appkey=" + APPKEY + "&keyword=" + URLEncoder.encode(keyword, "utf-8");

            try {
                result = HttpUtil.sendGet(url, "utf-8");
                JSONObject json = JSONObject.fromObject(result);
                if (json.getInt("status") != 0) {
                    System.out.println(json.getString("msg"));
                } else {
                    result = "";
                    JSONArray resultarr = json.optJSONArray("result");
                    for (int i = 0; i < resultarr.size(); i++) {
                        JSONObject obj = (JSONObject) resultarr.opt(i);
                        String name = obj.getString("name");
                        String content = obj.getString("content");
                        result = result + name + content;
                        System.out.println(name + " " + content);
                    }
                    return result;
                }
            } catch (Exception e) {
                e.printStackTrace();
                return result;
            }
            return result;
        }
        @Override
        public void run() {
            try {
                setUi_get(Get());
                // tv_result.setText(Get());
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tv_result = (TextView)findViewById(R.id.tv_result);
        btn_send = (Button)findViewById(R.id.btn_send);
        et_keyword = (EditText)findViewById(R.id.et_keyword);
        btn_send.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Threads_get se = new Threads_get();
                se.start();
            }
        });
    }
    public void setUi_get(final String response){
        // 此处格外注意,更新UI要在主线程里操作。此处为异步线程
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                tv_result.setText(response);
            }
        });
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/932722.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号