【Android新手笔记五】okhttp3网络通信框架

项目需要实现与服务器的数据传输。

只是进行表格数据的传输,不包含文件的上传下载,因此选择了虽然数据量不大但传输速度快的http通信协议。

尝试使用过volley类,不知道为啥没有捣鼓成功就去用了比较新的okhttp3~

参考鸿洋大神的博客http://blog.csdn.net/lmj623565791/article/details/47911083

首先直接导入了鸿洋大神的github封装类:

compile 'com.zhy:okhttputils:2.3.9'             //build.gradle文件里写下这一行就好

别忘了还需要网络授权,就是在配置文件里application前加一行

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

之后在activity中导入相关okhttp3的类包进行数据传输,大概的类包是这些:

import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
采用post请求向服务器传输json数据并处理返回的代码:

                final MediaType JSON
                        = MediaType.parse("application/json; charset=utf-8");   //编码格式,utf-8
                JSONObject jsonObject = new JSONObject();
                try {
                    jsonObject.put("tag", "clinic_reception_get");
                    jsonObject.put("name", stringname);
                    jsonObject.put("userID", stringID);
                    jsonObject.put("number", number);                          //上传到服务器的jsonobject键值对

                } catch (JSONException e) {
                    e.printStackTrace();
                }

                RequestBody body = FormBody.create(JSON, jsonObject.toString());   //post的数据格式转化

                OkHttpClient client = new OkHttpClient();                            //创建okhttpClient对象
                Request request = new Request.Builder().url(URL).post(body).build();   //创建一个request
                Call call= client.newCall(request);                                  //回调函数
                call.enqueue(new Callback() {
                    @Override
                    public void onFailure(Call call, IOException e) {                 //请求失败

                    }

                    @Override
                    public void onResponse(Call call, Response response) throws IOException {  //请求成功

                        try {
                            
                            JSONObject object = new JSONObject(response.body().string());   //返回的json数据

                            error = object.getBoolean("error");
                            if (!error) {
                                name.setText(object.getString("name"));
                                age.setText(object.getString("age"));
                                date.setText(object.getString("date"));
                                subject_info.setText(object.getString("subject_info"));
                                object_info.setText(object.getString("object_info"));
                                assessment.setText(object.getString("assessment"));
                                recipe.setText(object.getString("recipe"));
                                reception_doctor.setText(object.getString("reception_doctor"));
                            } else {
                                String errorMsg = object.getString("error_msg");
                                Looper.prepare();
                                Toast toast = Toast.makeText(getApplicationContext(), errorMsg,
                                        Toast.LENGTH_LONG);
                                toast.show();
                                Looper.loop();
                            }
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }

                    }
                });

如果线程冲突,可以新建一个子线程,再执行数据传输操作试试~


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值