Java新手,Java中的很多网络操作都不太熟悉,所以想写一个微博程序来熟悉下Java中的网络操作。
第一步:下载腾讯微博SDK
第二步:创建Android项目,并配置Build Path,加入SDK中httpmime-4.1.3.jar、Android_SDK_v1.2.jar两个库文件
第三步:编写代码,由于代码里面已经有注释,就不做过多说明:
package com.ns.wb;
import com.tencent.weibo.oauthv1.OAuthV1;
import com.tencent.weibo.oauthv1.OAuthV1Client;
import com.tencent.weibo.utils.QHttpClient;
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class TecentWeiboActivity extends Activity {
//声明控件变量
private Button requsetButton = null;
private TextView requestText = null;
private OAuthV1 oAuth;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//初始化OAuth对象
//参数为回调地址,移动应用可以为“null”
oAuth=new OAuthV1(Constants.OAUTH_CALLBACK_URL);
//参数为你在腾讯微博开放平台创建的应用的APP_KEY
oAuth.setOauthConsumerKey(Constants.APP_KEY);
//你的应用的APP_SECRET
oAuth.setOauthConsumerSecret(Constants.APP_SECRET);
//获取控件对象
requsetButton = (Button)findViewById(R.id.buttonRequest);
//绑定点击事件监听器
requsetButton.setOnClickListener(listener);
requestText = (TextView)findViewById(R.id.requestText);
//关闭OAuthV1Client中的默认开启的QHttpClient。
OAuthV1Client.getQHttpClient().shutdownConnection();
//为OAuthV1Client配置自己定义QHttpClient。
OAuthV1Client.setQHttpClient(new QHttpClient());
}
OnClickListener listener = new OnClickListener() {
public void onClick(View v) {
switch (v.getId()) {
case R.id.buttonRequest:
//从 Android 2.3 开始提供了一个新的类 StrictMode,
//该类可以用于捕捉发生在应用程序主线程中耗时的磁盘、
//网络访问或函数调用,可以帮助开发者改进程序,
//使主线程处理 UI 和动画在磁盘读写和网络操作时变得更平滑,
//避免主线程被阻塞。
//所以我们需要新起一个线程来获取访问令牌
new GetRequestTokenTask().execute();
break;
default:
break;
}
}
};
class GetRequestTokenTask extends AsyncTask{
@Override
protected Void doInBackground(Void... params) {
try {
//向腾讯微博开放平台请求获得未授权的Request_Token
oAuth = OAuthV1Client.requestToken(oAuth);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void result) {
requestText.append("\nrequest_token-->:"+oAuth.getOauthToken()+ "\nrequest_token_secret:\n"+oAuth.getOauthTokenSecret());
}
}
}
另外在SDK的源码中有Demo程序,里面有详细的OAuth认证过程,有兴趣的同学可以看一下。