关闭

Android Post方式提交数据

标签: Android网络编程HttpUrlConnectionpost
470人阅读 评论(0) 收藏 举报
分类:

1.场景

Android中经常会用到使用post方式请求json格式的数据。请求参数也是json格式的数据,在这里封装一下,方便日后查找。

2.HttpUrlConnection实现post请求

/**
     * 提交请求
     *
     * @param strUrlPath 请求的url
     * @param params     请求参数
     * @param encode     请求参数的编码方式
     * @return
     */
    public static String submitPostData(String strUrlPath, Map<String, Object> params, String encode) {
        int response = -1;
        byte[] data = new JSONObject(params).toString().getBytes();
        try {

            URL url = new URL(strUrlPath);

            HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
            httpURLConnection.setConnectTimeout(3000);     //设置连接超时时间
            httpURLConnection.setDoInput(true);            //打开输入流,以便从服务器获取数据
            httpURLConnection.setDoOutput(true);           //打开输出流,以便向服务器提交数据
            httpURLConnection.setRequestMethod("POST");     //设置以Post方式提交数据
            httpURLConnection.setUseCaches(false);          //使用Post方式不能使用缓存
            //设置请求体的类型是文本类型
            httpURLConnection.setRequestProperty("Content-Type", "application/json");
            httpURLConnection.setRequestProperty("Char-Set", encode);
            //设置请求体的长度
            httpURLConnection.setRequestProperty("Content-Length", String.valueOf(data.length));
            //获得输出流,向服务器写入数据
            OutputStream outputStream = httpURLConnection.getOutputStream();
            outputStream.write(data);
            //获得服务器的响应码
            response = httpURLConnection.getResponseCode();
            if (response == HttpURLConnection.HTTP_OK) {
                //处理服务器的响应结果
                InputStream inputStream = httpURLConnection.getInputStream();
                String result = dealResponseResult(inputStream);
                if (!TextUtils.isEmpty(result)) {
                    try {
                        JSONObject jsonObject = new JSONObject(result);
                        boolean flag = jsonObject.optBoolean("success", false);
                        if (flag) {
                            response = 200;
                        } else {
                            response = -1;
                        }
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }

                } else {
                    response = -1;
                }
            }
        } catch (IOException e) {
            Log.e(TAG, String.format("err: %s", e.toString()));
        }
        return response + "";
    }


    /**
     * 处理服务器的响应结果(将输入流转化成字符串)
     *
     * @param inputStream 服务器的响应输入流
     * @return
     */
    public static String dealResponseResult(InputStream inputStream) {
        String resultData;      //存储处理结果
        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        byte[] data = new byte[1024];
        int len = 0;
        try {
            while ((len = inputStream.read(data)) != -1) {
                byteArrayOutputStream.write(data, 0, len);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        resultData = new String(byteArrayOutputStream.toByteArray());
        return resultData;
    }


1
0
查看评论

Android网络编程之使用post方式提交数据

上篇写了使用get方式提交数据,post和get两种方式的不同点就是,get是把要提交的数据截取成字符串添加到地址后面的。而post方式是通过流提交给服务器的。另外get只用提交表单数据即可,post还要提交另外的几项数据。 使用post表单提交数据,http请求头会有这样两行数据 Content-...
  • suncold123
  • suncold123
  • 2015-08-30 15:11
  • 1698

http使用post和get方式提交数据

以前写过一篇博客,也是关于android联网进行数据提交的,但是是使用的HttpClient,这是Android封装好的一个类,今天写一下使用HttpURLConnection进行提交的。。只是复习一下。 package com.example.wifiip; import java.io.Byt...
  • zhegemingzihaonan
  • zhegemingzihaonan
  • 2015-09-04 22:11
  • 1196

jquery 使用$.ajax post方法提交数据

$.ajax({    type: "POST",     dataType:"json", //如果返回数据是JSON格式,dataType请指定json        u...
  • SZMS1
  • SZMS1
  • 2015-06-22 14:44
  • 899

4种常见的POST数据提交方式

HTTP/1.1 协议规定的 HTTP 请求方法有 OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT 这几种。其中 POST 一般用来向服务端提交数据,本文主要讨论 POST 提交数据的几种方式。 我们知道,HTTP 协议是以 ASCII 码传输,建立在 ...
  • happy_cheng
  • happy_cheng
  • 2017-01-18 21:34
  • 1652

四种常见的 POST 提交数据方式--good

http://www.cnblogs.com/softidea/p/5745369.html 四种常见的 POST 提交数据方式--good HTTP/1.1 协议规定的 HTTP 请求方法有 OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、CONN...
  • strawbingo
  • strawbingo
  • 2016-11-17 15:24
  • 2108

Android使用Put方式提交数据

前一阵子,公司有个api接口必须使用put方式请求提交数据,但是在java中put方式的使用相当少,网上几乎很难找到相应的例子,摸索了一阵子,终于搞定了,下面分享给大家: 1、四种http请求方式作用 POST   /uri   &#...
  • gs12software
  • gs12software
  • 2015-09-30 14:33
  • 2731

GET和POST提交数据方式的区别和使用

数据提交到服务器一般有两种方式,GET和POST。 GET的优点: 1.执行效率比POST高。 2.可以通过url传递数据,查找数据的时候就会体现到它的好处。 GET的缺点: 1.安全性很低,因为上传的数据都会显示在url上,所以一般用在上传无关紧要的数据上。 2.上传的数据量较小,一般...
  • qq_18297675
  • qq_18297675
  • 2016-07-08 15:29
  • 3845

使用Post方式提交数据

在Android中,提供了标准Java接口HttpURLConnection和Apache接口HttpClient,为客户端HTTP编程提供了丰富的支持。   在HTTP通信中使用最多的就是GET和POST了,GET请求可以获取静态页面,也可以把参数放在URL字符串的后面,传递给服务器。POS...
  • HUXU981598436
  • HUXU981598436
  • 2013-08-22 15:34
  • 2160

Android通过POST方式传递数据到服务器简单demo

通过Post方式传递数据给服务器是Android应用程序中的开发提交数据给服务器的一种主要方式,适用于数据量大、数据类型复杂、数据安全要求比较高的场合。 服务器端代码,该处主要编写doGet方法既可:package com.wangjialin.internet.servlet;import ja...
  • zhoujn90
  • zhoujn90
  • 2015-04-08 19:33
  • 2822

php模拟post方式提交数据

curl模拟post function curl_post($url, $post) { $options = array( CURLOPT_RETURNTRANSFER => true, CURLOPT_HEADER => false, CURLOPT_POST => true...
  • Gentry__
  • Gentry__
  • 2016-04-11 08:57
  • 453
    个人资料
    • 访问:632532次
    • 积分:9625
    • 等级:
    • 排名:第2208名
    • 原创:318篇
    • 转载:125篇
    • 译文:0篇
    • 评论:75条
    个人联系方式
    加入我的QQ群
    文章分类
    最新评论