Android开发请求网络:HttpUrlConnection连接错误

在使用httpurlconnection发送请求的时候,需要注意的几个问题:

对于Android6.0以上的版本,要新建一个线程执行网络请求任务,不能在主线程执行, 如以下方式:
参考地址

   new Thread(new Runnable(){
                @Override
                public void run() {
                    //发送网络请求
                }
            }).start();

提示错误:No Network Security Config specified, using platform default
解决办法:

  1. 创建res/xml/network_security_config.xml
    文件,如下:
    在这里插入图片描述
  2. 在文件中写入代码:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
  <base-config cleartextTrafficPermitted="true" />
</network-security-config>
  1. 修改manifest配置文件
<application 
......android:networkSecurityConfig="@xml/network_security_config">
.....</application>
  1. 不要忘了加入联网权限:
<uses-permission android:name="android.permission.INTERNET" />

贴上我的一个发送post请求的代码:

//新建线程执行网络请求
    public static void upload(final String url, final JSONObject jsonobj){
        new Thread(new Runnable() {
            @Override
            public void run() {
                UploadUtil.uploadData(url,jsonobj);//上传数据的方法
            }
        }).start();
    }
    
//上传数据
//参数:服务器地址;json对象
    private static void uploadData(String serverUrl, JSONObject jsonobj){
        try{
            //封装参数
            StringBuilder stringBuilder=new StringBuilder();
            Iterator it=jsonobj.keys();//遍历json对象
            while (it.hasNext()) {
                String key = (String) it.next();
                String value = jsonobj.getString(key);
                stringBuilder.append(key).append("=").append(value);
                stringBuilder.append("&");
            }
            stringBuilder.deleteCharAt(stringBuilder.length()-1);//删除最后一个&
            String data=stringBuilder.toString();

            //网络连接
            URL url=new URL(serverUrl);
            HttpURLConnection conn=(HttpURLConnection)url.openConnection();
            conn.setDoOutput(true);
            conn.setDoInput(true);
            conn.setUseCaches(false);
            conn.setRequestMethod("POST");
            conn.setReadTimeout(5000);
            conn.setConnectTimeout(10000);

            OutputStream out=new DataOutputStream(conn.getOutputStream()) ;
            out.write(data.getBytes());
            out.close();
            if(conn.getResponseCode()==200){
                // 获取响应的输入流对象
                System.out.println(conn.getContent());
                InputStream in=conn.getInputStream();
                BufferedReader reader=new BufferedReader(new InputStreamReader(in));
                String line;
                while ((line=reader.readLine())!=null){
                    Log.d("success",line);
                }
                reader.close();
                conn.disconnect();
            }
        } catch (Exception e){
            e.printStackTrace();
        }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值