Okhttp3表单上传数据到服务器使用指南
2016-12-17 12:40
543 查看
最近做项目,需求是要修改个人信息,具体要求就是用户点击地区弹到一个对话框中,使用滚轮选择省份和地区,然后确定,把选择的地址上传到服务器保存,下次进入个人信息修改界面时从服务器拉取最新保存的用户地址数据,这里只介绍如何将用户选择的地址上传到后台服务器。
(一) 首先是配置网络访问权限,在AS的gradle中配置环境:
manifest中添加:<uses-permission android:name="android.permission.INTERNET"/>
gradle中添加: compile 'com.squareup.okhttp3:okhttp:3.3.1'
(二) 异步post请求:
因为网络请求是耗时操作,因此我们需要在子线程中进行操作,具体Okhttp已经帮我们做了,这里需要构建client和请求体requestbody。 OkHttp3异步POST请求和OkHttp2有一些差别就是没有FormEncodingBuilder这个类,替代它的是功能更加强大的FormBody,具体使用如下:
具体就是把用户设置的信息通过OKhttp上传到服务器后台。
(3)另外需要注意的,所有HTTP请求的代理设置,超时,缓存设置等都需要在OkHttpClient中设置。如果需要更改一个请求的配置,可以使用 OkHttpClient.newBuilder()获取一个builder对象,该builder对象与原来OkHttpClient共享相同的连接池,配置等。
参考文章:
Android网络编程(六)OkHttp3用法全解析
okhttp3使用
(一) 首先是配置网络访问权限,在AS的gradle中配置环境:
manifest中添加:<uses-permission android:name="android.permission.INTERNET"/>
gradle中添加: compile 'com.squareup.okhttp3:okhttp:3.3.1'
(二) 异步post请求:
因为网络请求是耗时操作,因此我们需要在子线程中进行操作,具体Okhttp已经帮我们做了,这里需要构建client和请求体requestbody。 OkHttp3异步POST请求和OkHttp2有一些差别就是没有FormEncodingBuilder这个类,替代它的是功能更加强大的FormBody,具体使用如下:
private OkHttpClient client = new OkHttpClient(); public void setPersonalInfoByOkhttp3(String url, final int typeTag) { this.client = new OkHttpClient.Builder() .addInterceptor(new Interceptor() { public okhttp3.Response intercept(Chain chain) throws IOException { okhttp3.Request request = chain.request(); okhttp3.Response response = chain.proceed(request); return response; } }) .connectTimeout(30000, TimeUnit.MILLISECONDS) .readTimeout(30000,TimeUnit.MILLISECONDS) .writeTimeout(30000, TimeUnit.MILLISECONDS) .build(); RequestBody requestBody = null; switch (typeTag){ case 0: requestBody = new MultipartBody.Builder() .setType(MultipartBody.FORM) .addFormDataPart("token", sharedPreferences.getString("token", "")) .addFormDataPart("province", mUserLoginBean.getRegion().split(",")[0]) .addFormDataPart("region",mUserLoginBean.getRegion().split(",")[1]) .build(); break; case 1: requestBody = new MultipartBody.Builder() .setType(MultipartBody.FORM) .addFormDataPart("token", sharedPreferences.getString("token", "")) .addFormDataPart("province", mUserLoginBean.getRegion().split(",")[0]) .addFormDataPart("region",mUserLoginBean.getRegion().split(",")[1]) .build(); break; } okhttp3.Request request = new okhttp3.Request.Builder().url(url).post(requestBody).build(); //回调 OkHttpfanh返回的数据一定要用runOnUiThread显示toast client.newCall(request).enqueue(new Callback() { @Override public void onResponse(Call call, okhttp3.Response response) throws IOException { final String bodyStr = response.body().string(); Log.i("bodyStr","1"+bodyStr); final boolean ok = response.isSuccessful(); runOnUiThread(new Runnable() { public void run() { if(ok){ Toast.makeText(PersonalSettingActivity.this, bodyStr, Toast.LENGTH_SHORT).show(); }else{ Toast.makeText(PersonalSettingActivity.this, "server error : " + bodyStr, Toast.LENGTH_SHORT).show(); } } }); } @Override public void onFailure(Call call,final IOException e) { runOnUiThread(new Runnable() { public void run() { Toast.makeText(PersonalSettingActivity.this, "error : "+e.toString(), Toast.LENGTH_SHORT).show(); } }); } }); }
具体就是把用户设置的信息通过OKhttp上传到服务器后台。
(3)另外需要注意的,所有HTTP请求的代理设置,超时,缓存设置等都需要在OkHttpClient中设置。如果需要更改一个请求的配置,可以使用 OkHttpClient.newBuilder()获取一个builder对象,该builder对象与原来OkHttpClient共享相同的连接池,配置等。
参考文章:
Android网络编程(六)OkHttp3用法全解析
okhttp3使用
相关文章推荐
- 使用okhttp3实现多文件上传及表单数据一起上传
- 使用jsp用来接收表单上传的数据时,上传参数会丢失
- 表单form数据默认以键值对的形式将数据回发到服务器,回发非纯文本需使用enctype=multipart/form-data方式编码为整条消息
- OkHttp框架从入门到放弃,解析图片使用Picasso裁剪,二次封装OkHttpUtils,Post提交表单数据
- MaxCompute Tunnel SDK数据上传利器——BufferedWriter使用指南
- android之OkHttp简单使用,键值对,json数据,文件上传。
- 使用HttpClient实现文件和其他表单数据的上传
- [JQ权威指南]使用全局函数get()向服务器请求数据
- Okhttp使用post向服务器提交 sring[] 类型的数据
- HttpClient使用post方式模拟表单提交数据到服务器并下载服务器文件
- MaxCompute Tunnel SDK数据上传利器——BufferedWriter使用指南
- 怎样使用服务器上传下载数据
- Multipart/form-data POST文件上传详解 理论 简单的HTTP POST 大家通过HTTP向服务器发送POST请求提交数据,都是通过form表单提交的,代码如下: <form me
- android之OkHttp简单使用,键值对,json数据,文件上传。
- mysql定期备份数据并压缩上传到ftp服务器的bat文件脚本,恢复建议使用SQLyog enterprise
- Android使用HttpURLConnection进行POST请求,向服务器上传数据
- django(7)modelform操作及验证、ajax操作普通表单数据提交、文件上传、富文本框基本使用
- 【Android】Android客户端使用okhttp上传文件php服务器
- 上传文件 使用HTML5的FormData 提交表单和文件数据
- ios表单提交(多个参数)数据到服务器,上传图片AFNetWorking