先在清单文件中需要添加权限:

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

开始使用HttpURLConnection进行POST请求,向服务器上传数据:
(1)定位到要获取资源的网址并打开连接:

URL url = new URL(String urlPath);HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();

(2)进行连接设置:

//设置连接超时,2000mshttpURLConnection.setConnectTimeout(2000);//设置指定时间内服务器没有返回数据的超时,5000mshttpURLConnection.setReadTimeout(5000);//设置允许输出httpURLConnection.setDoOutput(true);//设置请求的方式httpURLConnection.setRequestMethod("POST");

(3)将要传送的数据写入输出流:

PrintWriter out = new PrintWriter(httpURLConnection.getOutputStream());out.print(timeTag);//写入输出流out.flush();//立即刷新out.close();

(4)对响应码进行判断,并获取网络返回的输入流:

int code = httpURLConnection.getResponseCode();if(code == 200){     InputStream is = httpURLConnection.getInputStream();     //连接服务器后,服务器做出响应返回的数据     String serverResponse = URLDecoder.decode(readInStream(is), "utf-8");     is.close();    //对返回的数据serverResponse进行操作}

(5)关闭连接:

httpURLConnection.disconnect();

一个向服务器上传Json数据包的例子:

    /**     * 将Json对象上传服务器     * @param url     * @param jsonObject     * @throws JSONException     */    private void postJsonToServer(URL url, JSONObject jsonObject ) throws JSONException {        //把JSON数据转换成String类型使用输出流向服务器写        try {            String str = "user="+ URLEncoder.encode(URLEncoder.encode(String.valueOf(jsonObject), "UTF-8"),"UTF-8");        try {            HttpURLConnection httpURLConnection = (HttpURLConnection)url.openConnection();            httpURLConnection.setConnectTimeout(2000);            httpURLConnection.setReadTimeout(5000);            httpURLConnection.setDoOutput(true);//设置允许输出            httpURLConnection.setRequestMethod("POST");//设置请求的方式            httpURLConnection.setRequestProperty("ser-Agent", "Fiddler");            //把上面访问方式改为异步操作,就不会出现 android.os.NetworkOnMainThreadException异常            StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();            StrictMode.setThreadPolicy(policy);            PrintWriter out = new PrintWriter(httpURLConnection.getOutputStream());            out.print(str);//写入输出流            out.flush();//立即刷新            out.close();            int code = httpURLConnection.getResponseCode();            if(code == 200 && ((url.toString()).equals(httpURLConnection.getURL().toString()))){                //获取服务器响应后返回的数据                InputStream is = httpURLConnection.getInputStream();                String successResponse = URLDecoder.decode(readInStream(is), "utf-8");                is.close();              if(SUCCESS_RESPONSE.equals(successResponse)){                    //上传成功                }            } else{                //上传失败            }        }catch (ConnectException e){            e.printStackTrace();        }        catch (SocketTimeoutException e){            e.printStackTrace();        catch (IOException e) {            e.printStackTrace();        } catch (UnsupportedEncodingException e) {            e.printStackTrace();        }    }

更多相关文章

  1. android UI进阶之自定义组合控件
  2. Android(安卓)Material Design 控件常用的属性
  3. (笔记)RecyclerView item按下变色效果 没有生效
  4. android文件选择器filePicker
  5. Android数据库中查找一条数据使用的方法 query详解
  6. Android(安卓)Google购买PHP服务器端验证(订阅购买和一次性购买)
  7. 某android平板项目开发笔记----aChartEngine图表显示(2)
  8. android基础学习之有没有标签基础设置
  9. Android(安卓)permission 权限类及中文说明

随机推荐

  1. Structured Streaming VS Flink
  2. DevOps时代社区文章精选
  3. 台湾资深老专家:你实施敏捷的路子对吗?
  4. Shiro源码分析----登录流程
  5. 案例 | 可视化的方式解决 Dev 和 Ops 的
  6. 博文|你还在用python写API,赶紧体验全新cu
  7. 腾讯与百度的持续交付案例 | 乔梁专栏
  8. Juniper防火墙基于带外管理实例配置SNMP
  9. 注定不平凡的2019~~
  10. 直播 | 开启你的阿拉丁神灯