flutter调用互联网API获取网络资源
注意:需要在配置文件中声明网络请求的权限
<uses-permission android:name="android.permission.INTERNET"/>
package com.example.app05;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import java.net.URL;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private TextView textShow;
private InputStream inputStream;
private BufferedReader bufferedReader;
private HttpURLConnection connection;
private int GET_DATA_SUCCESS = 101;
Handler handler = new Handler(new Handler.Callback() {
@Override
public boolean handleMessage(@NonNull Message msg) {
if(msg.what==GET_DATA_SUCCESS){
String data = msg.getData().getString("data");
Log.i("MainActivity",data);
textShow.setText(data);
}
return false;
}
});
@Override
protected void onCreate(Bundle saveInstanceState){
super.onCreate(saveInstanceState);
setContentView(R.layout.activity_main);
initUI();
}
private void initUI() {
textShow = findViewById(R.id.tv_show);
findViewById(R.id.tv_btn).setOnClickListener(this);
}
@Override
public void onClick(View v) {
initData();
}
private void initData() {
new Thread(new Runnable() {
@Override
public void run() {
String data = getDataServer();
Log.i("获取的数据为:",data);
Message message = Message.obtain();
Bundle bundle = new Bundle();
bundle.putString("data:",data);
message.setData(bundle);
message.what= GET_DATA_SUCCESS;
handler.sendMessage(message);
}
}).start();
}
private String getDataServer() {
try {
URL url = new URL("https://v1.hitokoto.cn/?c=f&encode=text");
connection = (HttpURLConnection) url.openConnection();
if(connection.getResponseCode()==200){
inputStream = connection.getInputStream();
bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
StringBuilder stringBuilder = new StringBuilder();
for (String line="";(line = bufferedReader.readLine())!=null;){
stringBuilder.append(line);
}
return stringBuilder.toString();
}
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
if(bufferedReader!=null){ bufferedReader.close(); }
if(inputStream!=null){ inputStream.close(); }
if(connection!=null){ connection.disconnect(); }
} catch (IOException e) {
e.printStackTrace();
}
}
return "";
}
}