HttpURLConnection 使用 Post 方式传递 Json 数据网络请求实例小记

1、我新建了一个新项目,先添加权限:

<uses-permission android:name="android.permission.INTERNET"/>

2、添加属性(如果网址是 http 的话需要添加,https 不需要添加):

android:usesCleartextTraffic="true"

3、新起一个子线程(网络请求可能比较耗时,不允许在主线程中执行):

    private void startHttpRequestThread() {
        new Thread(new Runnable() {
            @Override
            public void run() {
                doHttpRequest();
            }
        }).start();
    }

4、定义需要传递给服务器的 json 数据

    private String getJsonContent() throws JSONException {
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("username", "user123");
        jsonObject.put("password", "psw123");
        jsonObject.put("device", "device123");
        return jsonObject.toString();
    }

5、执行网络请求:

    private void doHttpRequest() {
        try {
            URL url = new URL("http://192.168.xxx.xxx:8080/xxx/login");
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("POST");
            conn.setRequestProperty("Connection","keep-Alive");
            conn.setRequestProperty("Content-Type", "application/json");
            conn.setDoOutput(true);
            conn.setDoInput(true);
            conn.setUseCaches(false);
            conn.connect();
            String json = getJsonContent();
            OutputStream os = conn.getOutputStream();
            os.write(json.getBytes(StandardCharsets.UTF_8));
            os.flush();
            os.close();
            int responseCode = conn.getResponseCode();
            android.util.Log.e("tag", "responseCode = " + responseCode);
            if (responseCode == HttpURLConnection.HTTP_OK) {
                InputStream input = conn.getInputStream();
                StringBuilder sb = new StringBuilder();
                int ss;
                while ((ss = input.read()) != -1) {
                    sb.append((char) ss);
                }
                android.util.Log.e("tag", "请求结果 = " + sb.toString());
                input.close();
            }
            conn.disconnect();
        } catch (Exception e) {
            android.util.Log.e("tag", "出现异常: " + e.toString());
            e.printStackTrace();
        }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

却染人间愁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值