<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">本人由于在本学期选修了Android课程,所以在学期末要设计一个Android的小应用,我因为在生活中发现我有的同学会把同样的“说说”发送到人人,QQ空间,新浪微博,微信朋友圈上面。问过他们,他们都表示是“一个一个发的”,作为程序猿,天生就是为了偷懒,这怎么可以偷懒!!!所以我就想到正好利用这学期的Android课程,就实现一下我的这个想法,把我们要说的话通过我写的App一键发送到各种社交媒体,因为各社交媒体现在都有了供开发者使用的API,所以现在使用还是很方便的。但是在具体的实施过程中,我还是遇到了一些问题。目前为止,我只实现了sina的发送微博功能,其他的等以后有时间就写。现在把一些问题记下来,方便以后查询,也防止自己忘掉:</span>
1.关于新浪的开发者文档《微博Android平台SDK文档V3.0.0.pdf》
,警察蜀黍就他,看到没有,就是他,耽误了我很多时间。作为官方文档,你居然有很多类、方法居然木有用!新浪你这么粗心你知道吗?!你让我很揪心你知道吗?
2.就发送微博来说,我写了一个函数sendWibo(View view),这只是一个测试的函数,用作图片的onClick事件,我们在使用时可以把它替换成sendWeibo(String str),这个函数供大家参考吧。
public void sendWeibo(View view) {
try {
String string = "陈";
// 组织post参数
List<BasicNameValuePair> params = new LinkedList<BasicNameValuePair>();
params.add(new BasicNameValuePair("status", string));
params.add(new BasicNameValuePair("access_token", mAccessToken
.getToken()));
final HttpClient httpClient = new DefaultHttpClient();
// 传入post方法的请求地址,即发送微博的api接口
final HttpPost postMethod = new HttpPost(
"https://api.weibo.com/2/statuses/update.json");
postMethod.setEntity(new UrlEncodedFormEntity(params, "utf-8"));
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
HttpResponse httpResponse;
try {
httpResponse = httpClient.execute(postMethod);
String resultStr = EntityUtils.toString(httpResponse
.getEntity());
Log.e(TAG, resultStr);
// 从json字符串中建立JSONObject
JSONObject resultJson;
try {
resultJson = new JSONObject(resultStr);
if (resultJson.has("error")) {
} else {
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 如果发送微博失败的话,返回字段中有"error"字段,通过判断是否存在该字段即可知道是否发送成功
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 将返回结果转为字符串,通过文档可知返回结果为json字符串,结构请参考文档
}
}).start();
} catch (Exception e) {
AlertDialog.Builder build = new AlertDialog.Builder(this);
AlertDialog dialog = build.create();
dialog.setTitle(e.getMessage());
dialog.show();
}
}
我们可以看到,官方提供的方法是:
我的亲爹呀,您提供的statusAPI=new StatusesAPI(acessToken);我发现木有用啊(如果是我错的话,原谅我的无知),无奈到网上搜了一下,才发现用Http是可以的,感谢那位大神给我指明了方向。
好啦,今天就写到这了,以后再补充。