自学内容网 自学内容网

HttpURLConnection学习

介绍

  HttpURLConnection类是位于java.net包下继承了URLConnection类的一个抽象类,每个 HttpURLConnection 实例都用于发出单个请求。

URL

  HttpURLConnection的使用需要依赖URL类,URL类位于java.net包下,有很多种构造方法。
在这里插入图片描述

HttpURLConnection

设置网络权限
在AndroidManifest.xml文件的添加<manifest>标签下<uses-permission android:name="android.permission.INTERNET" />
允许通过HTTP访问网络资源
通过修改 AndroidManifest.xml 文件来临时允许明文 HTTP 流量。
可以测试http://www.httpbin.org/get这个网站
测百度https://www.baidu.com/

<application
    android:usesCleartextTraffic="true"
    ... >
    ...
</application>

GET 请求

Button GET = findViewById(R.id.button);
GET.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    // 指定url
                    String url_baidu = "https://www.baidu.com/";
                    // 创建url对象
                    URL url = new URL(url_baidu);
                    // 创建连接对象
                    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
                    // 设置请求方式
                    connection.setRequestMethod("GET");
                    // 建立连接,不发送数据
                    connection.connect();
                    // 获取响应码
                    int responseCode = connection.getResponseCode();
                    if(responseCode == HttpURLConnection.HTTP_OK) {
                        InputStream inputStream = connection.getInputStream();
                        BufferedReader in = new BufferedReader(new InputStreamReader(inputStream));
                        String inputLine;
                        StringBuilder content = new StringBuilder();
                        while ((inputLine = in.readLine()) != null) {
                            content.append(inputLine);
                        }
                        // 关闭流
                        in.close();
                        
                        // 更新UI,必须在主线程
                        runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                Log.d("Response:", content.toString());
                                // 你也可以用Toast显示结果
                                // Toast.makeText(getApplicationContext(), content.toString(), Toast.LENGTH_LONG).show();
                            }
                        });
                    } else {
                        Log.d("Response:", "Request failed with code: " + responseCode);
                    }
                    connection.disconnect();
                } catch (Exception e) {
                    // 记录异常
                    Log.e("Error", "Exception: " + e.getMessage(), e);
                }
            }
        }).start();
    }
});

POST请求

        Button POST = findViewById(R.id.button2);
        POST.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        try {
                            String url_example = "https://www.httpbin.org/forms/post";
                            URL url = new URL(url_example);
                            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
                            connection.setRequestMethod("POST");
                            connection.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
                            connection.setDoOutput(true);
                            connection.setDoInput(true);

                            String postData = "comments=555&custemail=111@111&custname=111&custtel=111&delivery=&size=small&topping=cheese&topping=onion";

                            OutputStream outputStream = connection.getOutputStream();
                            outputStream.write(postData.getBytes(StandardCharsets.UTF_8));
                            outputStream.flush();
                            outputStream.close();

                            int responseCode = connection.getResponseCode();
                            if(responseCode==HttpURLConnection.HTTP_OK){
                                InputStream inputStream = connection.getInputStream();
                                BufferedReader in = new BufferedReader(new InputStreamReader(inputStream));
                                String inputLine;
                                StringBuilder content = new StringBuilder();
                                while ((inputLine=in.readLine())!=null){
                                    content.append(inputLine);
                                }
                                in.close();

                                Log.d("Response",content.toString());

                            }
                            else{
                                Log.d("Response:","Request failed with code: " + responseCode);
                            }

                            connection.connect();
                        } catch (Exception e) {
                            throw new RuntimeException(e);
                        }
                    }
                }).start();
            }
        });

原文地址:https://blog.csdn.net/weixin_74305514/article/details/142833461

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!