android studio 网络请求

news/2024/7/7 8:48:34 标签: android studio, 网络, android, java
1.基础工具类
public class MyRequest {
    /**
     *服务器基础网址
     */
    public static String severUrl="http://xxx.xx.xx.xx:xx";

    /**
     *Post网址链接
     */
    public String post(String url1, String data) {

        try {
            URL url = new URL(url1);
            //创建链接
            HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
            //两种方法GET POST
            httpURLConnection.setRequestMethod("POST");
            //设置发送数据的格式
            httpURLConnection.setRequestProperty("Content-Type", "application/json");
            //设置超时时间
            httpURLConnection.setConnectTimeout(5000);
            httpURLConnection.connect();

            DataOutputStream dos = new DataOutputStream(httpURLConnection.getOutputStream());
            String msg = data;//这里是POST请求需要的参数字符串类型
            dos.write(msg.getBytes(StandardCharsets.UTF_8));
            dos.flush();
            dos.close();//关闭

            int responseCode = httpURLConnection.getResponseCode();
            if (responseCode == httpURLConnection.HTTP_OK) {
                //判断请求是否成功
                InputStream inputStream = httpURLConnection.getInputStream();
                ByteArrayOutputStream arrayOutputStream = new ByteArrayOutputStream();
                byte[] bytes = new byte[1024];
                int length = 0;
                while ((length = inputStream.read(bytes)) != -1) {
                    arrayOutputStream.write(bytes, 0, length);
                    arrayOutputStream.flush();//强制释放缓冲区
                }
                //读取响应体的内容
                String s = arrayOutputStream.toString();
                return s;//返回请求到的内容,字符串形式
            } else {
                return "链接未成功:-1";//如果请求失败返回-1
            }

        } catch (Exception e) {
            // 出现异常也返回-1
            return e.toString();
        }


    }

    /**
     *get网址链接
     */
    public String get(String url) {

        try {
            //1.HttpURLConnection建立连接,打开链接
            URL requestUrl = new URL(url);
            HttpURLConnection httpURLConnection = (HttpURLConnection) requestUrl.openConnection();

            //两种方法GET POST
            httpURLConnection.setRequestMethod("GET");
            //设置超时时间
            httpURLConnection.setConnectTimeout(3000);
            httpURLConnection.setReadTimeout(3000);

            int responseCode = httpURLConnection.getResponseCode();
            if (responseCode == httpURLConnection.HTTP_OK) {

                //2.InputStream获取二进制流
                InputStream inputStream = httpURLConnection.getInputStream();
                ByteArrayOutputStream arrayOutputStream = new ByteArrayOutputStream();
                byte[] bytes = new byte[1024];
                int length = 0;
                while ((length = inputStream.read(bytes)) != -1) {
                    arrayOutputStream.write(bytes, 0, length);
                    arrayOutputStream.flush();//强制释放缓冲区
                }
                String s = arrayOutputStream.toString();
                return s;
            } else {
                return "-1";
            }
        } catch (Exception e) {
            return "-1";
        }

    }

    /**
     *HttpClientPost网址链接
     */
    public String httpClientPost(String url, String jsonData) {

        String result = "";
        //创建post方式请求对象
        HttpPost httpPost = new HttpPost(url);
        //创建httpclient对象
        CloseableHttpClient httpClient = HttpClients.createDefault();
        try {
            //创建请求头对象
            BasicHttpClientResponseHandler handler = new BasicHttpClientResponseHandler();
            //设置请求格式,utf-8解决中文乱码
            StringEntity entity = new StringEntity(jsonData, ContentType.parse("application/json;charset=UTF-8"));
            httpPost.setEntity(entity);
            //执行POST请求
            result = httpClient.execute(httpPost, handler);
            return result;
        } catch (Exception e) {
            return  e.toString();
        } finally {
            try {
                httpClient.close();
            } catch (Exception e) {
                Log.d("网络链接", "httpClientPost: 没有成功关闭!");
            }
        }
    }

    /**
     *获取注册网址
     */
    public  String getRegisterUrl(){
        return  severUrl+"/Account/Register";
    }
    /**
     *获取激活网址
     */
    public  String getActiveUrl(){
        return  severUrl+"/Ticket/Active";
    }
    /**
     *获取登录网址
     */
    public  String getLoginUrl(){
        return  severUrl+"/Account/Login";
    }


}

2.应用

btn_checkData.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {

        //异步请求网址
        new Thread(new Runnable() {
            @Override
            public void run() {

                MyRequest request = new MyRequest();
                loginUrl = request.getLoginUrl();
                String res = request.httpClientPost(loginUrl, strJson);
                Log.d("扳机请求:", res);
                //异步线程更新UI视图
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {

                        Log.d("扳机请求:", res);

                    }
                });

            }
        }).start();

    }

});


http://www.niftyadmin.cn/n/289565.html

相关文章

分布式事务 [面试]

1. 基础概念 1.1 什么是事务 事务可以看做是一次大的活动,它由不同的小活动组成,这些活动要么全部成功,要么全部失败。 1.2 本地事务 在计算机系统中,更多的是通过关系型数据库来控制事务,这是利用数据库本身的事务…

[杂谈]从《天堂2》到永恒之塔私服的感慨

不才在下是个老丫头了,平时喜欢潜水,还是在玩激战时注册的多玩论坛号,也不怎么说话,都是看别人说得多(害羞嘛……)。 想当年《天堂二》内测时,刚好在成都开了个内测号 首发会,我大清…

vue项目前端解决跨域问题

在前后端分离项目中,跨域是一定会出现的问题,本文主要介绍跨域问题的解决思路,以及在vue项目中如何使用代理的方式在前端解决跨域问题,同时提供一个后段解决的方案。 1、产生原因 跨域问题产生的原因是浏览器的同源策略。浏览器同…

jdk8和jdk17同时存在时的【环境配置】

一、先进行环境下载: jdk8:https://www.oracle.com/cn/java/technologies/javase/javase8u211-later-archive-downloads.html jdk17:https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html PS:jdk8在下载结束,安装…

【IM苹果推iMessage】苹果真机推送自动分配任务,自动分配任务,让您瞄准中高端客户

推荐内容IMESSGAE相关 作者✈️IMEAE推荐内容iMessage苹果推软件 *** 点击即可查看作者要求内容信息作者✈️IMEAE推荐内容1.家庭推内容 *** 点击即可查看作者要求内容信息作者✈️IMEAE推荐内容2.相册推 *** 点击即可查看作者要求内容信息作者✈️IMEAE推荐内容3.日历推 *** …

数据分析如何入门?这4类 Excel 函数助你从小白到大神

Excel是我们从事数据分析的朋友们,会经常用到的最基本的工具。而Excel函数又是Excel中最为重要的、最为常用的知识点,我们必须要掌握。 基于此,今天就分类为大家讲述最为常用的Excel函数。 逻辑函数 1、and 2、or 3、if 当使用了if(…

【华为OD机试 2023最新 】 找数字、找等值元素(C语言题解 100%)

文章目录 题目描述输入描述输出描述用例题目解析代码思路:C语言题目描述 给一个二维数组nums,对于每一个元素nums[i],找出距离最近的且值相等的元素,输出横纵坐标差值的绝对值之和,如果没有等值元素,则输出-1。 输入描述 输入第一行为二维数组的行 输入第二行为二维数…

修改系统语言字体的方法及注意事项

Android修改系统语言字体 随着我们生活品质的提升,现在人们对于手机的依赖越来越高,而且对于手机的功能也有了更高的要求。其中,界面的字体对于我们视觉的体验感受非常重要。而在Android系统中,默认的字体可能并不符合我们的胃口。…