Android与javaweb数据交互

本文介绍了如何使用OkHttp从Android客户端向Java Web服务端发送数据,包括字符串和文件(经Base64编码)。在Android端,数据发送需注意使用非主线程,并在发送POST请求时采用字符串参数。服务端使用Tomcat和Struts框架,可以返回JSON、HTML或流格式数据。在处理Base64编码时,需要注意Android SDK版本和Java JDK版本引起的编码差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android向前端发送数据

    一般需要交互的数据无非就是文件和字符串(可以替代很多东西),文件又可以变为字符串流进行传输。本文将使用okhttp包从Android端向后端发送数据和接收返回数据。
注意:个人电脑测试若无https协议的域名或ip地址,请在Android的AndroidManifest.xml文件中声明使用明文传输,即不加密而使用http协议。

<application
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:roundIcon="@mipmap/ic_launcher_round"
            android:supportsRtl="true" android:usesCleartextTraffic="true"//此处默认选项为false,不启用明文传输,改为true即可
            android:theme="@style/AppTheme">
            </application>

    数据发送,Android端向客户端发送消息如果为get直接在url中添加参数即可,下面主要介绍post,用字符串作为post参数,文件将经过base64编码为字符串传输,字符串类型数据可采用json传输也可以直接用字符串。注意:okhttp包需额外下载,包含okhttp和okio两个包且版本存在不适配问题,需要对应,这里采用okhttp3.12, okio1.14。如果使用grade(一般Android都是这个),可直接在build.grade中使用implementation group: 'com.squareup.okio', name: 'okio', version: '1.14.0'导入,建议下载对应包。

注意:数据发送操作(向网络申请数据)为耗时操作,不可在主线程中运行,另外不建议直接在oncreate等视图创建方法中调用,可以作为按钮点击事件调用。另外收sdk限制同时会限制jdk版本,这里使用的base64编码是Android自带的,与稍后后端解析时的不同。因为jdk版本原因及编码规范,存在不同格式的base64编码,Androidsdk26以上可采用java自带的base64编码工具。

new Thread()
  {
   
  	//重写线程run方法
    @Override
    public void run()
     {
   
     //定义okhttp对象
      OkHttpClient okHttpClient = new OkHttpClient();
      try
      {
   
        //如果传输文件
      	FileInputStream inputStream = new FileInputStream(new File(getDataDir() + "/x1.png"));
      	//文件读取为bytes
        byte[] bytes = new byte[inputStream.available()];
        inputStream.read(bytes);
        //将bytes使用base64编码
        String a1 = Base64
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嘻嘻哈哈笑呵呵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值