返回顶部
首页 > 资讯 > 服务器 >Android开发中利用Retrofit如何将图文上传到服务器
  • 843
分享到

Android开发中利用Retrofit如何将图文上传到服务器

retrofitandroidroi 2023-05-31 08:05:38 843人浏览 独家记忆
摘要

Android开发中利用Retrofit如何将图文上传到服务器?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。前言:现在大多数的项目中都涉及图片+文字上传了,下面

Android开发中利用Retrofit如何将图文上传到服务器?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

前言:现在大多数的项目中都涉及图片+文字上传了,下面请详见实现原理:

开发环境:AndroidStudio

1.引入依赖:

compile 'com.squareup.retrofit2:retrofit:2.1.0'  

2.网络权限:

<uses-permission android:name="android.permission.INTERNET" />  

3.创建上传对象OkHttpClient :

private static final OkHttpClient client = new OkHttpClient.Builder()   .addInterceptor(new Interceptor() {    @Override    public Response intercept(Chain chain) throws IOException {     Request request = chain       .request()       .newBuilder()       .build();     return chain.proceed(request);    }   })   .readTimeout(10, TimeUnit.SECONDS)//设置读取超时时间   .writeTimeout(10, TimeUnit.SECONDS)//设置写的超时时间   .connectTimeout(15, TimeUnit.SECONDS)//设置连接超时时间   .build();

4.上传图片的公有方法:

private synchronized final static void uploadImgAndParameter(Map<String, Object> map, String url,   final UIDataListener listener) {  // mImgUrls为存放图片的url集合  MultipartBody.Builder builder = new MultipartBody.Builder().setType(MultipartBody.FORM);  if (null != map) {   for (Map.Entry<String, Object> entry : map.entrySet()) {    if (entry.getValue() != null) {     if (entry.getValue() instanceof File) {      File f = (File) entry.getValue();      builder.addFormDataPart(entry.geTKEy(), f.getName(), RequestBody.create(MEDIA_TYPE_PNG, f));     } else {      builder.addFormDataPart(entry.getKey(), entry.getValue().toString());     }    }   }  }  //创建RequestBody  RequestBody body = builder.build();//  MultipartBody requestBody = builder.build();  //构建Request请求  final Request request = new Request.Builder()    .url(url)//地址    .post(body)//添加请求体//    .post(requestBody)//添加请求体    .build();  client.newCall(request).enqueue(new okhttp3.Callback() {   @Override   public void onResponse(Call call, final Response response) throws IOException {    if (response.isSuccessful()) {//判断是否成功     final String data = response.body().string();//string()仅可调用一次。否则报IllegalStateException: closed异常     Log.i("file1", "上传照片成功-->" + data);     onSuccess(listener, data);     call.cancel();//上传成功取消请求释放内存    }   }   @Override   public void onFailure(Call call, final IOException e) {    Log.i("file2", "上传失败-->" + e.getMessage());    String msg = e.getMessage();    if (msg == null || msg.equals("timeout")) {     onError(listener, "网络不稳定请求超时!");    } else {     onError(listener, e.getMessage());    }    call.cancel();//上传失败取消请求释放内存   }  }); }

//注意:添加手机图片,别忘了添加SD卡权限

5.全部代码:

public class HttpUtil {  private static final Handler handler = new Handler(Looper.getMainLooper());  private static final MediaType MEDIA_TYPE_PNG = MediaType.parse("image  public static void addCoupon( int shopperId,String shopperName,                 File file, final UIDataListener listener) {    String url = "shopappajx/shopAppCouponAction_saveCoupon.htm";    Map<String, Object> map = new HashMap<>();    map.put("shopperId", shopperId);    map.put("shopperName", shopperName);    map.put("couponImage", file);//商品图片    uploadImgAndParameter(map, url, listener);  }  //上传图片共有方法  private synchronized final static void uploadImgAndParameter(Map<String, Object> map, String url,      final UIDataListener listener) {    // mImgUrls为存放图片的url集合    MultipartBody.Builder builder = new MultipartBody.Builder().setType(MultipartBody.FORM);    if (null != map) {      for (Map.Entry<String, Object> entry : map.entrySet()) {        if (entry.getValue() != null) {          if (entry.getValue() instanceof File) {            File f = (File) entry.getValue();            builder.addFormDataPart(entry.getKey(), f.getName(), RequestBody.create(MEDIA_TYPE_PNG, f));          } else {            builder.addFormDataPart(entry.getKey(), entry.getValue().toString());          }        }      }    }    //创建RequestBody    RequestBody body = builder.build();//    MultipartBody requestBody = builder.build();    //构建Request请求    final Request request = new Request.Builder()        .url(url)//地址        .post(body)//添加请求体//        .post(requestBody)//添加请求体        .build();    client.newCall(request).enqueue(new okhttp3.Callback() {      @Override      public void onResponse(Call call, final Response response) throws IOException {        if (response.isSuccessful()) {//判断是否成功          final String data = response.body().string();//string()仅可调用一次。否则报IllegalStateException: closed异常          Log.i("file1", "上传照片成功-->" + data);          onSuccess(listener, data);          call.cancel();//上传成功取消请求释放内存        }      }      @Override      public void onFailure(Call call, final IOException e) {        Log.i("file2", "上传失败-->" + e.getMessage());        String msg = e.getMessage();        if (msg == null || msg.equals("timeout")) {          onError(listener, "网络不稳定请求超时!");        } else {          onError(listener, e.getMessage());        }        call.cancel();//上传失败取消请求释放内存      }    });  }  private final static void onSuccess(final UIDataListener listener, final String data) {    handler.post(new Runnable() {      public void run() {        // 需要在主线程的操作。        listener.onSuccess(data);      }    });  }  private final static void onError(final UIDataListener listener, final String msg) {    if (null != listener) {      handler.post(new Runnable() {        public void run() {          // 需要在主线程的操作。          listener.onFailure(msg);        }      });    }  }  public interface UIDataListener {   //网络请求成功    void onSuccess(String data);   //网络请求失败    void onFailure(String errorMassage);  }}

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网服务器频道,感谢您对编程网的支持。

--结束END--

本文标题: Android开发中利用Retrofit如何将图文上传到服务器

本文链接: https://lsjlt.com/news/224367.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Android开发中利用Retrofit如何将图文上传到服务器
    Android开发中利用Retrofit如何将图文上传到服务器?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。前言:现在大多数的项目中都涉及图片+文字上传了,下面...
    99+
    2023-05-31
    retrofit android roi
  • Android应用中怎么将文件上传到服务器
    这篇文章将为大家详细讲解有关Android应用中怎么将文件上传到服务器,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1)、新建一个Android项目命名为androidUpload,目录结构...
    99+
    2023-05-31
    android roi
  • Android中怎么利用OkHttp上传文件到服务器
    Android中怎么利用OkHttp上传文件到服务器,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、编写服务器端在上一讲服务器下新建UploadFileServlet,代...
    99+
    2023-05-31
    okhttp android 服务器
  • 如何将文件上传到linux云服务器
    上传文件到linux云服务器的方法:下载并安装开源软件FileZilla。安装成功后,打开软件,在界面对应的输入框填上云服务器外网IP、FTP用户账号、FTP用户账号的密码、FTP监听的端口号,再点击“快速连接”。连接成功后,可以用鼠标选中...
    99+
    2024-04-02
  • NodeJS中怎么将文件或图像上传到服务器
    这期内容当中小编将会给大家带来有关NodeJS中怎么将文件或图像上传到服务器,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。创建空白的Node JS Web应用程序在package.json中设置依赖关系开...
    99+
    2023-06-17
  • 如何将文件上传到腾讯云服务器
    1. 登录腾讯云控制台 首先,打开您的浏览器并访问腾讯云控制台(https://console.cloud.tencent.com/)。使用您的腾讯云账号登录。 2. 进入云服务器控制台 在腾讯云控制台首页,点击左侧导航栏中的【云服务器】...
    99+
    2023-10-28
    腾讯 如何将 文件上传
  • 阿里云如何将文件上传到服务器
    本文将介绍如何使用阿里云提供的服务,将本地文件上传到服务器,以便在服务器上进行进一步的操作和管理。 阿里云作为全球领先的云计算服务提供商,为用户提供了多种方便快捷的方法来上传文件到服务器。以下是几种常见的方法:1. 使用阿里云对象存储(OS...
    99+
    2024-01-01
    阿里 如何将 文件上传
  • Android将图片上传到php服务器的实例代码
    layout中很普通,就是两个button和一个ImageView<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="htt...
    99+
    2023-05-30
    android 图片上传 服务器
  • 如何将EA文件上传到阿里云服务器
    简介:EA文件是一种常用的文件格式,在各种应用程序中广泛使用。但是,将EA文件上传到阿里云服务器可能会遇到一些问题。本文将介绍如何将EA文件上传到阿里云服务器,并提供一些实用的技巧和建议。 上传EA文件到阿里云服务器的方法:使用FTP客户端...
    99+
    2023-12-26
    阿里 如何将 文件上传
  • 如何将数据上传到云服务器
    将数据上传到云服务器可以通过以下步骤实现:1. 选择云服务提供商:选择一个可靠的云服务提供商。2. 创建云服务器实例:在选择的云服务...
    99+
    2023-09-27
    云服务器
  • 如何将图片放到云服务器上
    要将图片放到云服务器上,可以按照以下步骤进行操作:1. 选择一个云服务提供商,并注册一个账号。2. 在云服务提供商的控制台中,创建一...
    99+
    2023-09-27
    云服务器
  • 如何将文件上传至云服务器
    要将文件上传到云服务器,您可以按照以下步骤进行操作:1. 获取云服务器的登录凭证:通常,您会获得一个IP地址、用户名和密码来登录到云...
    99+
    2023-08-08
    云服务器
  • ajax如何上传多图到php服务器
    本篇内容介绍了“ajax如何上传多图到php服务器”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一般上传图片到服务器有两种方式:把图片转换成...
    99+
    2023-06-08
  • 怎么在Java项目中利用Struts将图片上传到指定文件夹
    怎么在Java项目中利用Struts将图片上传到指定文件夹?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。JSP上传页面上传一定要为form加上enctype=&...
    99+
    2023-05-31
    java struts ava
  • 如何将视频上传到阿里云服务器
    在当前数字化时代,视频作为重要的信息载体,被广泛应用于教育、娱乐、商务等多个领域。阿里云作为国内领先的云计算服务提供商,其服务器具有稳定、高效、安全等优点。本文将详细介绍如何将视频上传到阿里云服务器。 步骤一:创建阿里云账号首先,您需要在阿...
    99+
    2023-11-16
    阿里 如何将 服务器
  • 如何将源码上传到阿里云服务器
    源码上传到阿里云服务器是开发过程中常见的需求,阿里云提供了丰富的服务和工具,帮助开发者方便地将源码上传到服务器。本篇文章将详细介绍如何将源码上传到阿里云服务器。 一、准备工作在开始上传源码之前,你需要确保你已经拥有了一个阿里云的账号,并且在...
    99+
    2023-12-09
    阿里 如何将 源码
  • 如何将网站上传到阿里云服务器
    # 本文将介绍如何将网站上传到阿里云服务器,并提供详细的操作步骤和注意事项。无论您是新手还是有经验的开发者,都能通过本文轻松掌握网站上传到阿里云服务器的方法。步骤一:购买阿里云服务器首先,您需要在阿里云官网上购买一台合适的服务器。根据您的需...
    99+
    2024-01-16
    阿里 如何将 服务器
  • 如何上传文件到腾讯云服务器中
    一、选择合适的云服务商 选择云服务商是上传文件到云服务器的第一步。在选择云服务商时,需要考虑以下因素: 云服务商的可靠性和安全性。 云服务商的技术支持和服务水平。 云服务商的价格和服务质量。 云服务商的数据中心地理位置。 云服务商的备案...
    99+
    2023-10-28
    腾讯 上传文件 器中
  • 如何将本地文件传到云服务器
    要将本地文件传输到云服务器,您可以按照以下步骤进行操作:1. 登录到您的云服务器。您可以通过SSH登录到您的云服务器。2. 在本地计...
    99+
    2023-09-16
    云服务器
  • git如何上传文件到gitlab服务器
    在进行git操作时,上传文件是一个很常见的需求。GitLab是一个非常常用的代码托管平台,本文将介绍如何将文件上传到GitLab。创建一个GitLab仓库首先,你需要在GitLab上创建一个仓库。登录GitLab,进入你的账号,点击右上角的...
    99+
    2023-10-22
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作