900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > Java基础知识强化之网络编程笔记22:Android网络通信之 Android常用OAuth登录(获取

Java基础知识强化之网络编程笔记22:Android网络通信之 Android常用OAuth登录(获取

时间:2021-12-30 13:21:12

相关推荐

Java基础知识强化之网络编程笔记22:Android网络通信之 Android常用OAuth登录(获取

1. 获取百度个人信息(使用Gson解析):

2. 代码案例:

(1)工程一览图,如下:

(2)activity_main.xml:

1 <LinearLayout xmlns:android="/apk/res/android" 2xmlns:tools="/tools" 3android:layout_width="match_parent" 4android:layout_height="match_parent" 5android:orientation="vertical" 6tools:context="com.himi.oauthdemo.MainActivity" > 7<Button 8 android:id="@+id/btn_oauth" 9 android:layout_width="wrap_content"10 android:layout_height="wrap_content"11 android:text="Baidu OAuth"12 android:onClick="onClickOAuth"/>13 14<TextView15 android:id="@+id/tv_access_token"16 android:layout_width="wrap_content"17 android:layout_height="wrap_content"18 android:text="@string/hello_world" />1920<Button21 android:id="@+id/btn_get_user_info"22 android:layout_width="wrap_content"23 android:layout_height="wrap_content"24 android:text="Baidu Get User Info"25 android:onClick="onClickGetUserInfo"/>26 27<TextView28 android:id="@+id/tv_result"29 android:layout_width="wrap_content"30 android:layout_height="wrap_content"31 android:text="@string/hello_world" />32 33 </LinearLayout>

布局效果,如下:

(3)MainActivity.java:

1 package com.jikexueyuan.oauth; 2 3 import java.io.IOException; 4 5 import android.app.Activity; 6 import android.os.Bundle; 7 import android.text.TextUtils; 8 import android.view.Menu; 9 import android.view.MenuItem; 10 import android.view.View; 11 import android.widget.TextView; 12 import android.widget.Toast; 13 14 import com.baidu.api.AsyncBaiduRunner; 15 import com.baidu.api.AsyncBaiduRunner.RequestListener; 16 import com.baidu.api.Baidu; 17 import com.baidu.api.BaiduDialog.BaiduDialogListener; 18 import com.baidu.api.BaiduDialogError; 19 import com.baidu.api.BaiduException; 20 import com.google.gson.Gson; 21 import com.google.gson.annotations.SerializedName; 22 23 public class MainActivity extends Activity { 2425private TextView mTvAccessToken = null; 26private TextView mTvResult = null; 27private TextView mTvResultUser = null; 2829private Baidu mBaidu = null; 30private Gson mGson = null; 31 32@Override 33protected void onCreate(Bundle savedInstanceState) { 34 super.onCreate(savedInstanceState); 35 mBaidu = new Baidu("V3VW2ulGTGbTM32pXyAs7fvY", this); 36 mGson = new Gson(); 37 setContentView(R.layout.activity_main); 38 mTvAccessToken = (TextView)findViewById(R.id.tv_access_token); 39 mTvResult= (TextView)findViewById(R.id.tv_result); 40 mTvResultUser= (TextView)findViewById(R.id.tv_result_user); 41} 4243public void OnClickOAuth(View v) { 44 mBaidu.authorize(this, true, true, new BaiduDialogListener() { 45 46 @Override 47 public void onError(BaiduDialogError arg0) { 48 refreshUI("error"); 49 } 50 51 @Override 52 public void onComplete(Bundle arg0) { 53 refreshUI(mBaidu.getAccessToken()); 54 } 55 56 @Override 57 public void onCancel() { 58 refreshUI("cancel"); 59 } 60 61 @Override 62 public void onBaiduException(BaiduException arg0) { 63 refreshUI("exception"); 64 } 65 }); 66} 6768public void OnClickGetUserInfo(View v) { 69 String token = mBaidu.getAccessToken(); 70 if(TextUtils.isEmpty(token)) { 71 Toast.makeText(this, "Token is null", Toast.LENGTH_SHORT).show(); 72 } else { 73 AsyncBaiduRunner runner = new AsyncBaiduRunner(mBaidu); 74 String url = "/rest/2.0/passport/users/getInfo"; 75 runner.request(url, null, "GET", new RequestListener() { 76 77 @Override 78 public void onIOException(IOException arg0) { 79 refreshResultUI("onIOException"); 80 } 81 82 @Override 83 public void onComplete(String json) { 84 refreshResultUI(json); 85 } 86 87 @Override 88 public void onBaiduException(BaiduException arg0) { 89 refreshResultUI("onBaiduException"); 90 } 91 }); 92 /** 93 new Thread(){ 94 public void run() { 95 String url = "/rest/2.0/passport/users/getInfo"; 96try { 97 final String jsonText = mBaidu.request(url, null, "GET"); 98 // final UserEntity user = mGson.fromJson(jsonText, UserEntity.class); 99 final UserEntity user = mGson.fromJson(jsonText, new TypeToken<UserEntity>(){}.getType());100 runOnUiThread(new Runnable() {101 102 @Override103 public void run() {104 mTvResult.setText(jsonText);105 mTvResultUser.setText(mGson.toJson(user));106 }107 });108} catch (IOException e) {109 e.printStackTrace();110} catch (BaiduException e) {111 e.printStackTrace();112}113 }114 }.start();115 **/116 }117}118119 120private void refreshResultUI(final String msg) {121 runOnUiThread(new Runnable() {122 123 @Override124 public void run() {125 mTvResultUser.setText(msg);126 }127 });128}129private void refreshUI(final String msg) {130 runOnUiThread(new Runnable() {131 132 @Override133 public void run() {134 mTvAccessToken.setText(msg);135 }136 });137}138 139@Override140public boolean onCreateOptionsMenu(Menu menu) {141 // Inflate the menu; this adds items to the action bar if it is present.142 getMenuInflater().inflate(R.menu.main, menu);143 return true;144}145 146@Override147public boolean onOptionsItemSelected(MenuItem item) {148 // Handle action bar item clicks here. The action bar will149 // automatically handle clicks on the Home/Up button, so long150 // as you specify a parent activity in AndroidManifest.xml.151 int id = item.getItemId();152 if (id == R.id.action_settings) {153 return true;154 }155 return super.onOptionsItemSelected(item);156}157158159class UserEntity {160 private String userid;161 private String blood;162 @SerializedName("username")163 private String name;164 public String getUserid() {165 return userid;166 }167 public void setUserid(String userid) {168 this.userid = userid;169 }170 public String getBlood() {171 return blood;172 }173 public void setBlood(String blood) {174 this.blood = blood;175 }176 public String getName() {177 return name;178 }179 public void setName(String username) {180 this.name = username;181 }182 183}184 }

与此同时AndroidMainfest.xml,如下:

1 <?xml version="1.0" encoding="utf-8"?> 2 <manifest xmlns:android="/apk/res/android" 3package="com.jikexueyuan.oauth" 4android:versionCode="1" 5android:versionName="1.0" > 6 7<uses-sdk 8 android:minSdkVersion="8" 9 android:targetSdkVersion="21" />10<uses-permission android:name="android.permission.INTERNET" />11<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />1213<application14 android:allowBackup="true"15 android:icon="@drawable/ic_launcher"16 android:label="@string/app_name"17 android:theme="@style/AppTheme" >18 <activity19 android:name=".MainActivity"20 android:label="@string/app_name" >21 <intent-filter>22 <action android:name="android.intent.action.MAIN" />23 24 <category android:name="android.intent.category.LAUNCHER" />25 </intent-filter>26 </activity>27</application>28 29 </manifest>

Java基础知识强化之网络编程笔记22:Android网络通信之 Android常用OAuth登录(获取个人信息)...

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。