Android开发POST请求怎么使用?

Android开发中



麻烦各位大佬帮忙编写HTTP_POST类的send(String ip,String poems)方法,参数为服务器地址(String ip)和请求内容(String poems),用post请求访问服务器,send方法的返回值为服务器响应内容。



要求:不使用任何框架。



参数实例:

服务器地址(String ip)如:"http://192.168.1.100:8000/"

请求内容(String poems)如:"?username=1234&password=123456"



权限已经打开,麻烦各位大佬给出详细代码(从导包开始)和详细注释

用系统api就行了

 /**
     * POST请求
     *
     * @param url url
     * @param map 请求参数的map集合形式
     * @return
     */
    public static String post(final String url, final Map<String, String> map) {
        final StringBuilder sb = new StringBuilder();
        FutureTask<String> task = new FutureTask<String>(new Callable<String>() {
            @Override
            public String call() throws Exception {
                DataOutputStream out = null;
                BufferedReader br = null;
                URLConnection conn;
                URL posturl = new URL(url);
                try {
                    conn = posturl.openConnection();//创建连接
                    conn.setDoInput(true);//post请求必须设置
                    conn.setDoOutput(true);//post请求必须设置
                    out = new DataOutputStream(conn
                            .getOutputStream());//输出流
                    StringBuilder request = new StringBuilder();
                    for (String key : map.keySet()) {
                        request.append(key + "=" + URLEncoder.encode(map.get(key), "UTF-8") + "&");
                    }//连接请求参数
                    out.writeBytes(request.toString());//输出流写入请求参数
                    out.flush();
                    out.close();
                    br = new BufferedReader(new InputStreamReader(conn.getInputStream()));//获取输入流
                    String line;
                    while ((line = br.readLine()) != null) {
                        sb.append(line);
                    }
                    System.out.println(sb.toString());
                } catch (Exception e) {
                    e.printStackTrace();
                } finally {//执行流的关闭
                    if (br != null) {
                        br.close();
                    }
                    if (out != null) {
                        out.close();
                    } }
                return sb.toString(); }
        });
        String s = null;
        new Thread(task).start();
        try {
            s = task.get();//异步获取返回值
        } catch (Exception e) {
            e.printStackTrace();
        }
        return s;
    }
}


参考文章 :https://blog.csdn.net/tectrol/article/details/87348381