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

来源:互联网 发布:淘宝怎么设置不包邮 编辑:程序博客网 时间:2024/06/04 21:12

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

只是进行表格数据的传输,不包含文件的上传下载,因此选择了虽然数据量不大但传输速度快的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();                        }                    }                });

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


0 0
原创粉丝点击