Android 网络请求Content-type类型解析

说明:

Android的Post请求的请求参数分为好几种种,既Content-type的请求类型:

1、json串流的方式请求;

connection.setRequestProperty("Content-Type", "application/json;charset=UTF-8");//使用的是表单请求类型

对应的参数是:

String params = "a=a&b=b&c=c&d=d";

2、map表单请求(和网页表单请求方式一样)

connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");//使用的是表单请求类型

对应的数据是:

String params = "{a:a,b:b,c:c}";

3、不常用的,全部列出:

application/x-javascript text/xml->xml数据 
application/x-javascript->json对象 
application/x-www-form-urlencoded->表单数据 
application/json;charset=utf-8 -> json数据

代码:

这里给出一个HttpURLConnection的请求例子,使用的是表单请求:

//发送图片到后台
    private void xinYanShiBie(final String imageString) {
        //请求
        new Thread(new Runnable() {
            @Override
            public void run() {

                try {
                    Log.e("上传", "开始");

                    // 0.相信证书

                    // 1. 获取访问地址URL
                    URL url = new URL("http://10.6.20.13:8080/s/idcard/uploadBack");
                    // 2. 创建HttpURLConnection对象
                    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
                    // 3. 设置请求参数等
                    // 请求方式
                    connection.setRequestMethod("POST");
                    // 超时时间
                    connection.setConnectTimeout(30000);
                    connection.setReadTimeout(30000);
                    // 设置是否输出
                    connection.setDoOutput(true);
                    // 设置是否读入
                    connection.setDoInput(true);
                    // 设置是否使用缓存
                    connection.setUseCaches(false);
                    // 设置此 HttpURLConnection 实例是否应该自动执行 HTTP 重定向
                    connection.setInstanceFollowRedirects(true);
                    // 设置使用标准编码格式编码参数的名-值对
                    connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");//使用的是表单请求类型
                    // 连接
                    connection.connect();
                    // 4. 处理输入输出
                    // 写入参数到请求中

                    String params = "member_id" + "=" + "8000013189" + "&" +
                            "data_type" + "=" + "json" + "&" +
                            //"image" + "=" + URLEncoder.encode(imageString, "utf-8");//如果图片使用Base64 的 DEFAULT 那么传输的时候使用URLEncoder编码一下被Base64编码过的图片,否则会出现\n \r
                            "image" + "=" + imageString;//如果图片使用Base64 的 NO_WRAP 那么不需求编码,直接传输

                    Log.e("上传", "请求参数:" + params);

                    OutputStream out = connection.getOutputStream();
                    out.write(params.getBytes());
                    out.flush();
                    out.close();
                    // 从连接中读取响应信息
                    String msg = "";
                    int code = connection.getResponseCode();
                    if (code == 200) {
                        BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
                        String line;
                        while ((line = reader.readLine()) != null) {
                            msg += line + "\n";
                        }
                        reader.close();
                    }
                    // 5. 断开连接
                    connection.disconnect();

                    //loading

                    // 处理结果
                    //sysData(msg);
                    Log.e("上传", "请求结果:" + msg);
                } catch (Exception e) {
                    //loading
                    Log.e("上传", "异常:" + e);
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            Toast.makeText(MainActivity.this, "请求出错,请检查网络设置!", Toast.LENGTH_LONG).show();
                        }
                    });
                }
            }
        }).start();


    }

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Beluga_白鲸

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

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

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

打赏作者

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

抵扣说明:

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

余额充值