首页 > 学院 > 开发设计 > 正文

网络请求okhttp框架

2019-11-08 00:21:26
字体:
来源:转载
供稿:网友

使用的是网络请求的okhttp框架 这个博客很好的解释okhttp框架值得推荐

http://blog.csdn.net/lmj623565791/article/details/47911083

简单的SharedPReferences: Preferences 在Android当中被用来记录应用,以及用户喜好等等,它可以用来保存 一些简单的数据类型,Boolean,int,String等

数据的存入必须通过SharedPreferences对象的编辑器对象Editor来实现,存入(put)之后与写入数据库类似一定要commit。 apply()一下就可以 存入的代码:

SharePreferences editor = pref.edit(); if(remember_pass.isChecked()){ editor.putBoolean("remember_pass",true); editor.putString("account",Account); editor.putString("passWord",passWord); } else{ editor.clear(); } editor.apply();

写入的代码: 直接get对应的类型就可以 它有两个参数,第一个是参数对应的名称,第二个是参数对应的是若访问失败, 则返回的值

boolean isRemember = pref.getBoolean("remember_pass",false);String account = pref.getString("account","");String password = pref.getString("password","");

对于耗时的问题,我们都在在子线程中运行,但有一点在子线程中不允许更新UI, 在android4.0之后网络请求必须在子线程中完成

private void sendRequestWithOkHttp(){ new Thread(){ public void run(){ // Toast.makeText(MainActivity.this,"you click it",Toast.LENGTH_LONG).show(); try{ //构建request请求 RequestBody requestBody = new FormEncodingBuilder() .add("loginname",Account) .add("password",passWord) .add("is phone","1") .build(); OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("http://218.25.54.49:2222/yxh_web/syrj_security_check") .post(requestBody) .build(); //执行 Response response = client.newCall(request).execute(); responseData = response.body().string(); Message msg = new Message(); msg.what = UpData; handler.sendMessage(msg); // showResponse(responseData); }catch(Exception e){ e.printStackTrace(); } } }.start(); }

为了能够更新UI我们以msg为中间的媒介,写了handlerMessage()来处理 更新UI,Handle类的定义: 主要接受子线程发送的数据,并用此数据配合主线程更新UI

private Handler handler = new Handler() { public void handleMessage(Message msg) { switch (msg.what) { case UpData: try{ JSONObject jsonObject = new JSONObject(responseData); String flag = jsonObject.getString("resultflag"); msg1 = jsonObject.getString("error_msg"); //获取日期 SimpleDateFormat formatter = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); Date curDate = new Date(System.currentTimeMillis()); String Date = formatter.format(curDate); //数据库操作 SQLiteDatabase db = dbHelper.getWritableDatabase(); ContentValues values = new ContentValues(); values.put("Account",Account); values.put("Password",passWord); values.put("If_Log",msg1); values.put("Date",Date); db.insert("Record",null,values); values.clear(); if(flag.equals("1")){ editor = pref.edit(); if(remember_pass.isChecked()){ editor.putBoolean("remember_pass",true); editor.putString("account",Account); editor.putString("password",passWord); } else{ editor.clear(); } editor.apply(); Intent intent = new Intent(MainActivity.this,Main2Activity.class); startActivity(intent); } else{ // Log.d("eee",msg1); Toast.makeText(MainActivity.this,msg1,Toast.LENGTH_LONG).show(); } }catch(Exception e){ e.printStackTrace(); } break; default: break; } } };
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表