Android开发,实现和后端接口交互,调用!

这篇具有很好参考价值的文章主要介绍了Android开发,实现和后端接口交互,调用!。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

创建一个空的Android项目

android与后端交互,工作中常用的代码逻辑经验分享,Spring,android,交互,java文章来源地址https://www.toymoban.com/news/detail-536960.html

  • 创建成功之后在MainActivity中实现调用JavaSpring后端的接口项目,这里使用的是,实现点击一个按钮,然后发送http请求的示例
  • 准备工作:Android自带的http发送请求的方法不太好用,所以我们使用okhttp方法来实现,打开,buile.gradle(Module:app),导入下面的代码
apply plugin: 'com.android.application'

android {
    compileSdkVersion 33
    buildToolsVersion "33.0.0"
    defaultConfig {
        applicationId "com.skypan.myapplication"
        minSdkVersion 21
        targetSdkVersion 33
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'androidx.appcompat:appcompat:1.0.2'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    implementation 'com.squareup.okhttp3:okhttp:4.4.1'//导入这个,然后点击刷新下载,成功之后就可以使用了
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test.ext:junit:1.1.0'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
}
  • 首先是实现后端使用@RequestBody注解开发的接口
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //发送java 中@RequestBody注解的请求示例
        Button button = findViewById(R.id.按钮id);
        button.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View view) {
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        try {
                            //调用后端接口
                            String json = "json格式的body";//后端接收的body参数
							 //发送请求,可以使用默认的http,这里使用okhttp请求
                            OkHttpClient client = new OkHttpClient();//创建client对象
                            //发送请求
                            Request request = new Request.Builder()
                                    .url("接口地址")
                                    .post(
                                            RequestBody
                                                    .create(
                                                    MediaType
                                                            .parse("application/json"),json))
                                    .build();
                            Response response = client.newCall(request).execute();//执行发送的指令,并接收后端接口返回的数据
                            runOnUiThread(new Runnable() {
                                @Override
                                public void run() {
                                	//操作安卓界面不能在单线程中,只能在主线程中,所以使用runOnUiThread中操作ui
                                    Toast.makeText(MainActivity.this, "发送成功", Toast.LENGTH_SHORT).show();
                                }
                            });
                        }catch (Exception e){
                            e.printStackTrace();
                            runOnUiThread(new Runnable() {
                                @Override
                                public void run() {
                                    Toast.makeText(MainActivity.this, "网络连接失败", Toast.LENGTH_SHORT).show();
                                }
                            });
                        }
                    }
                }).start();
            }
        });
  • 调用JavaSpring开发的参数直接放在url上的请求示例
Button button1 = findViewById(R.id.按钮id);
        button1.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View view) {
            new Thread(new Runnable() {
                @Override
                public void run() {
                    try {
                        //调用后端接口,设置参数
                        FormBody.Builder params = new FormBody.Builder();
                        params.add("参数名称","参数值");

                        //发送请求,可以使用默认的http,这里使用okhttp请求
                        OkHttpClient client = new OkHttpClient();
                        Request request = new Request.Builder()
                                .url("接口地址")
                                .post(params.build())
                                .build();
                        Response response = client.newCall(request).execute();//执行发送的指令
                        //获取返回过来的参数
                        String responseData = response.body().string();//获取返回过来的json格式结果
                        JSONObject jsonObject = new JSONObject();
                        jsonObject.get("参数名称");
                        runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                Toast.makeText(MainActivity.this, "发送成功", Toast.LENGTH_SHORT).show();
                            }
                        });
                    }catch (Exception e){
                        e.printStackTrace();
                        runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                Toast.makeText(MainActivity.this, "网络连接失败", Toast.LENGTH_SHORT).show();
                            }
                        });
                    }
                }
            }).start();
        }
    });
  • 调用JavaSpring后端开发的上传文件的接口示例
Button button2 = findViewById(R.id.按钮id);
        button2.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View view) {
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        try {
                            //调用后端接口
                            OkHttpClient client = new OkHttpClient();
                            File file = new File("文件路径");//被上传的文件,注意权限
                            MultipartBody.Builder requestBody = new MultipartBody.Builder().setType(MultipartBody.FORM);//通过表单上传
                            RequestBody fileBody = RequestBody.create(MediaType.parse("image/*"),file);//上传的文件以及类型
                            requestBody.addFormDataPart("file",file.getName(),fileBody);//参数:1请求的key,2.文件名称,3fileBody
                            final Request request = new Request.Builder()
                                    .url("接口地址")
                                    .post(requestBody.build())
                                    .build();//创建请求
                            client.newBuilder().readTimeout(5000, TimeUnit.MILLISECONDS).build().newCall(request).enqueue(new Callback() {
                                @Override
                                public void onFailure(@NotNull Call call, @NotNull IOException e) {
                                    e.printStackTrace();
                                    Log.d("文件上传","失败了");
                                }

                                @Override
                                public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException {
                                    if (response.isSuccessful()){
                                        try {
                                            JSONObject jsonObject = new JSONObject(response.body().string());
                                            Log.d("文件上传成功",jsonObject.getString("code"));
                                        } catch (JSONException e) {
                                            e.printStackTrace();
                                        }

                                    }else {
                                        Log.d("文件上传",response.message()+"error:body"+response.body().string());
                                    }
                                }
                            });
                            runOnUiThread(new Runnable() {
                                @Override
                                public void run() {
                                    Toast.makeText(MainActivity.this, "发送成功", Toast.LENGTH_SHORT).show();
                                }
                            });
                        }catch (Exception e){
                            e.printStackTrace();
                            runOnUiThread(new Runnable() {
                                @Override
                                public void run() {
                                    Toast.makeText(MainActivity.this, "网络连接失败", Toast.LENGTH_SHORT).show();
                                }
                            });
                        }
                    }
                }).start();
            }
        });

到了这里,关于Android开发,实现和后端接口交互,调用!的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • flutter和android互相调用、android原生项目与flutter module之间的交互、如何在flutter module中使用原生的方法

    bridge.dart MainActivity.kt MainActivity中 Flutter中 android项目依赖flutter module的方式网上有很多,这里就不做讲解。主要说一下这种情况下android如何与flutter module之间进行方法的调用 踩坑:期初我是想让flutter module调用它内部中的.android文件夹下的原生代码。.android文件夹下有Flutter、

    2023年04月08日
    浏览(47)
  • Android so库开发——Android Studio调用so库(二)

            在 Android Studio生成自己的so库 中已经创建了自己的so库,这是一个JNI规范的so库,可以直接将so库放到libs中,并按照上面文章中MainActivity中的调用方法使用。 1、build.gradle(app)配置 2、加载so库中方法         在Sudio中方法名虽然显示红色,但不影响使用。 3、

    2024年02月09日
    浏览(44)
  • Android 音频开发——Radio服务调用(四)

            在《Android 音频开发——Radio服务(二)》中介绍了 BroadcastRadioService 的启动流程,这里我们看一下 APP 如何一步步调用到 Radio 服务的。         这里我们从 CarRadioActivity 开始分析。 1、CarRadioActivity 源码位置:/packages/apps/Car/Radio/src/com/android/car/radio/CarRadioActivity

    2024年02月03日
    浏览(35)
  • Android 原生功能与 Vue 交互实现

    前端用 Android webview 嵌入 vue 地址,如何在vue 页面中显示 Android 版本号 从Android中将该信息传递给Vue应用程序。可以通过使用WebView的Java Bridge来实现此目的。这里是一些可能有用的步骤: 在你的Android代码中,使用getBuildVersionName()或getBuildVersionCode()等方法来获取Android的版本号。

    2024年04月24日
    浏览(40)
  • Android开发中需要和HTML5交互的各自方法以及示例

    在 Android 开发中,我们通常使用 WebView 组件来加载和显示 HTML5 页面。要实现 Android 与 HTML5 的交互,我们需要使用 WebView 提供的 JavaScript 接口。 以下是 Android 与 HTML5 交互的常用方法及示例: 1: Android 调用 HTML5 中的 JavaScript 函数: 在 WebView 中设置 JavaScriptEnabled 为 true ,然后使

    2024年02月05日
    浏览(40)
  • 使用vue+springboot+mybatis开发的信息管理系统,前端和后端是怎么进行交互的

    1. 前端向后端发送http请求。 2. 后端接收到请求后,通过mybatis从数据库中获取所需数据。 3. 后端将处理完的数据通过restful api返回给前端。 4. 前端根据后端返回的数据进行页面渲染。 具体来说,可以分为以下几个步骤: 前端使用vue.js作为基础框架,使用axios库向后端发送h

    2024年02月06日
    浏览(73)
  • web开发中,简单的案例说明前端页面和后端以及mysql数据库的交互过程

            首先这是一个基于 web开发 的稿子,作者也是转java20天左右,以前也一直迷惑起那段页面是如何和后端进行交互,数据提交提交到了哪里?后端开发如何获取到前端提交的数据呢?后端数据提交到数据库中应该如何处理,接下来通过一个简单的例子,登录案例 (实

    2024年02月03日
    浏览(57)
  • 【android开发-21】android中调用系统摄像头camera拍照和相册的用法详解

    1, 调用摄像头 在Android中,调用系统摄像头拍照需要使用Intent来启动Camera应用,并在应用中设置相应的权限。下面是一个简单的例子:

    2024年02月21日
    浏览(48)
  • android studio开发——android11版本以上权限动态申请问题,包括文件读写、图片、相机的调用

    用于android手机的升级,现在已经是android13版本了,对于权限问题可能更加敏感了,前段时间开发发现之前的方法已经不再适用于android11以后的版本了 读写权限申请最好是跳转到设置中进行才是最好了,下面我们开始进行 首先是AndroidManifest.xml文件的权限 然后这里讲解一下权

    2024年02月10日
    浏览(59)
  • 使用JSBridge框架来实现Android与H5(JS)交互

    1.首先我们来了解一下什么是JSBridge? 在开发中,为了追求开发的效率以及移植的便利性,一些展示性强的页面我们会偏向于使用h5来完成,功能性强的页面我们会偏向于使用native来完成,而一旦使用了h5,为了在h5中尽可能的得到native的体验,我们native层需要暴露一些方法给

    2024年02月08日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包