如何获取接口?
标题 效果图
在这里插入图片描述
//1,找控件
Button button = findViewById(R.id.button);
//2,点击事件
findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//3,开启子线程 不能再主线程中操作,否则容易ANR
new Thread() {
@Override
public void run() {
super.run();
//耗时操作(请求网络转态)
//4,判断网络状态
boolean networkConnected = Http.inNetworkConnected(MainActivity.this);
//判断是否断网
if (networkConnected) {
//有网就请求数据
String get = Http.requestHttpGet("http://apis.juhe.cn/cook/query?key=81d31315d7cb8a6e2aa7add264afb729&menu=%E8%87%8A%E5%AD%90%E9%9D%A2&rn=10&pn=3");
Gson gson = new Gson();
JsonBean bean = gson.fromJson(get, JsonBean.class);
//把数据传递给主线程
Message message = new Message();
message.what = 0;
message.obj = bean;
handler.sendMessage(message);
} else {
handler.sendEmptyMessageDelayed(1, 0);
}
}
}.start();
}
});
}
Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case 0:
JsonBean bean = (JsonBean) msg.obj;
Toast.makeText(MainActivity.this, "" + bean.toString(), Toast.LENGTH_LONG).show();
break;
case 1:
//没有网就提示用户没网
Toast.makeText(MainActivity.this, "没有网络", Toast.LENGTH_LONG).show();
break;
}
}
};
}
## 标题 以下是HTTP 代码
``public class Http {
public static boolean inNetworkConnected(Context context){
//,注意要写网络权限
//判断参数是否为空
if (context != null){
//获取系统服务
//获取连接管理器
ConnectivityManager connectivityManager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
//获取网络转态
NetworkInfo info = connectivityManager.getActiveNetworkInfo();
if (info != null){
//判断网络是否可用
return info.isAvailable();
}
}
return false;
}
/*
请求数据GET请求
*/
public static String requestHttpGet(String strUrl){
try {
//设置url
URL url = new URL(strUrl);
//获取
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
//设置GET请求
connection.setRequestMethod("GET");
//设置联机主机超时时间
connection.setConnectTimeout(5000);
//设置从主机读取数据超时
connection.setReadTimeout(5000);
//获取请求码(判断网络请求是否正确)
int code = connection.getResponseCode();
//判断请求是否成功
if (code == HttpURLConnection.HTTP_OK){
//如果数据请求成功,就获取数据
InputStream stream = connection.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(stream,"utf-8"));
//拼接字符串
StringBuilder builder = new StringBuilder();
//把数据读取成字符串
String str = "";
while ((str = reader.readLine()) != null){
//把一行数据拼接成一行数据
builder.append(str);
}
//返回拼接后的数据
return builder.toString();
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}