• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

关于java:Android-执行-HTTP-GET-请求

java 搞代码 4年前 (2022-02-14) 19次浏览 已收录 0个评论

MainActivity 中只有一个 TextView 用于输入 GET 申请的后果:

import androidx.appcompat.app.AppCompatActivity;

import android.os.AsyncTask;
import android.os.Bundle;
import android.widget.TextView;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

public class MainActivity extends AppCompatActivity {
    TextView textView1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        textView1 = findViewById(R.id.textView1);
        AsyncGetHttp task_get = new AsyncGetHttp();
        task_get.execute("https://www.baidu.com");
    }

    class AsyncGetHttp extends AsyncTask<String, Float, String> {
        HttpURLConnection connection = null;
        BufferedReader reader = null;

        @Override
        protected void onPreExecute() {
            // 工作刚开始的时候执行
        }

        @Override
        protected String doInBackground(String... params) {
            try {
                URL url = new URL(params[0]);
                connection = (HttpURLConnection) url.openConnection();
                // 不应用缓存
                connection.setUseCaches(false);
                // 应该指的是与服务器建设连贯的最大工夫
                connection.setConnectTimeout(1000);
      <p style="color:transparent">来源gao!%daima.com搞$代*!码网</p>          // 读取数据的最大工夫,两个最大工夫不要设置得太短,不然会很容易呈现超时的异样
                connection.setReadTimeout(6000);
                // 如果不是失常的申请后果则抛出异样,留神获取后果的步骤肯定要在申请内容给完之后
                if (connection.getResponseCode() != 200) {
                    throw new Exception("http error:" + connection.getResponseCode() + "," + connection.getResponseMessage());
                }
                // 应用 InputStream 进行接管操作
                InputStream input = connection.getInputStream();
                reader = new BufferedReader(new InputStreamReader(input));
                StringBuilder response = new StringBuilder();
                // 这里把 reader 中的内容一行行地读取到 response 中
                String line;
                while ((line = reader.readLine()) != null) {
                    response.append(line);
                }
                // 返回最终的后果
                return response.toString();
            } catch (Exception ex) {
                // 返回谬误音讯
                return ex.getMessage();
            } finally {
                // 申请完结后开释资源
                if (reader != null) {
                    try {
                        reader.close();
                    } catch (Exception ignore) {
                    }
                }
                if (connection != null) {
                    connection.disconnect();
                }
            }
        }

        @Override
        protected void onProgressUpdate(Float... progresses) {
            // 解决进度报告
        }

        @Override
        protected void onPostExecute(String result) {
            // 工作实现就会到此
            textView1.setText(result);
        }

        @Override
        protected void onCancelled() {
            // 被动勾销工作
        }
    }
}

这里定义了一个继承自 AsyncTask 的外部类,应用外部类的起因是在 AsyncTaskonPostExecute 回调办法中可能间接应用 MainActivity 创立时获取的 TextView 对象。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:关于java:Android-执行-HTTP-GET-请求
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址