江南少年 2020-04-02 09:12 采纳率: 25%
浏览 338
已采纳

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"



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

  • 写回答

1条回答 默认 最新

  • 键盘舞者113 博客专家认证 2020-04-02 17:46
    关注

    用系统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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 pycharm输出和导师的一样,但是标红
  • ¥15 想问问富文本拿到的html怎么转成docx的
  • ¥15 我看了您的文章,遇到了个问题。
  • ¥15 GitHubssh虚拟机连接不上
  • ¥15 装完kali之后下载Google输入法 重启电脑后出现以下状况 且退不出去 桌面消失 反复重启没用
  • ¥15 ESP-IDP-BLE配网连接wifi
  • ¥15 ue2.6.12版本用的若以,安装gojs,引入import * as go from 'gojs';报错
  • ¥15 服务器上的网站安装php5.6版本
  • ¥15 请大咖一起探索iptv 直播源的hls通过反向代理解密
  • ¥100 寻找技术员 云闪付tn转h5输入卡号付款的链接 重酬!