开发android手机客户端,常常会需要上传文件到服务器,比如:你手机里的照片。

使用okhttp会是一个很好的选择。它使用很简单,而且运行效率也很高。

首先,在 app/build.gradle 的 dependencies 增加 implementation 'com.squareup.okhttp3:okhttp:3.8.1' 可以参照如下代码

apply plugin: 'com.android.application'apply plugin: 'kotlin-android'apply plugin: 'kotlin-android-extensions'android {  compileSdkVersion 26  defaultConfig {    applicationId "com.cofox.mykt.myweather"    minSdkVersion 19    targetSdkVersion 26    versionCode 1    versionName "1.0"    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"  }  buildTypes {    release {      minifyEnabled false      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'    }  }  sourceSets {    main {      res.srcDirs =          [              'src/main/res/layout/menufunction',              'src/main/res'          ]    }  }}dependencies {  implementation fileTree(dir: 'libs', include: ['*.jar'])  implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"  implementation 'com.android.support:appcompat-v7:26.1.0'  implementation 'com.android.support.constraint:constraint-layout:1.0.2'  testImplementation 'junit:junit:4.12'  androidTestImplementation 'com.android.support.test:runner:1.0.1' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'  implementation 'org.jetbrains.anko:anko-sdk19:0.10.3'  implementation 'org.jetbrains.anko:anko-support-v4:0.10.3'  implementation 'org.jetbrains.anko:anko-appcompat-v7:0.10.3'  implementation 'com.google.code.gson:gson:2.7'implementation 'com.android.support:percent:26.1.0'  implementation 'com.squareup.okhttp3:okhttp:3.8.1'}

在界面上添加一个按钮,以及一个可滚动显示返回值的文字组件。

因为只是基本功能实现,所以采用发送手机上指定的一个文件就达成目的。

在代码编辑区,首先添加一个默认的服务器地址。

//设置访问服务端IP  var serverIp = "192.168.1.105"

在onCreate方法内添加按钮操作代码

//post方式上传文件(sd卡跟路径image.png文件)    btnOkHttpUploadFilePost.setOnClickListener {      Thread {        try {          val url = "http://" + serverIp + "/upload"          val file = File("/sdcard/image.png")          val fileBody = RequestBody.create(MediaType.parse("application/octet-stream"), file)          val requestBody = MultipartBody.Builder()              .setType(MultipartBody.FORM)              .addFormDataPart("uploadfile", "image.png", fileBody)              .build()          val request = Request.Builder()              .url(url)              .post(requestBody)              .build()          val httpBuilder = OkHttpClient.Builder()          val okHttpClient = httpBuilder              .connectTimeout(10, java.util.concurrent.TimeUnit.SECONDS)              .writeTimeout(15, java.util.concurrent.TimeUnit.SECONDS)              .build()          val response = okHttpClient.newCall(request).execute()          val responseStr = response.body()?.string()          runOnUiThread { ttviewResponse.text = responseStr }        } catch (e: Exception) {        }      }.start()    }

这段代码中的 val url 值是根据服务端的要求设置的。

val file 是手机上图片文件的位置。

val requestBody 中 .addFormDataPart("uploadfile", "image.png", fileBody) 的 uploadfile 也是服务端要求的必要键。

最后的 responseStr 是上传操作之后,获取服务端的信息反馈。

 

总结

以上所述是小编给大家介绍的android 开发中使用okhttp上传文件到服务器,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

更多相关文章

  1. 为Android2.3添加下拉通知栏的快捷开关
  2. android studio IDE 下,设置ACTIVITY全屏
  3. Android(安卓)5.1长按电源键添加重启功能
  4. Android(安卓)开发 关于APP无法安装到Android模拟器上的问题
  5. Android(安卓)Studio 3.5.2版本中Kotlin代码不显示代码补齐自动
  6. JS 解决安卓手机输入框被软键盘遮住的问题
  7. 通话接通和断开时振动
  8. android checkbox自定义样式
  9. Android(安卓)爬坑路

随机推荐

  1. 导入的android项目报错,进入一个类,显示不
  2. Android环境搭建(三)————继续动手
  3. android有序广播
  4. 浅谈Android(安卓)onTouchEvent 与 onInt
  5. Android中Bitmap用法实例分析
  6. ANDROID SDK配置步骤
  7. 《Android开发艺术探索》读书笔记——Han
  8. [置顶] Bottom Sheet
  9. Android(安卓)Testing
  10. Android(安卓)数据存储——上