`
river418
  • 浏览: 26935 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

Android:SNS客户端开发六:发送一条文字微博

 
阅读更多

      之前我们已经完成了发送微博的界面设计,现在我们来尝试编写发送一条微博。新浪微博发送文字微博的API文档查看地址:http://open.weibo.com/wiki/Statuses/update

     这里采用post方法向新浪提交数据。与获取账号信息一样,我们还是采用HttpClient开源项目,来为发送http请求。

先看post方法:

/*
 * 新浪微博发送普通微博post方法	
 */
	public String doPost(String url, List<NameValuePair> pairs)
			throws OAuthMessageSignerException,
			OAuthExpectationFailedException, OAuthCommunicationException,
			ClientProtocolException, IOException {
		HttpPost postRequest = new HttpPost(url);

		postRequest.setEntity(new UrlEncodedFormEntity(pairs, HTTP.UTF_8));//对传入的参数进行UTF-8编码,然后写入到Entity中

		// 关闭Expect:100-Continue握手
		// 100-Continue握手需谨慎使用,因为遇到不支持HTTP/1.1协议的服务器或者代理时会引起问题
		postRequest.getParams().setBooleanParameter(
				CoreProtocolPNames.USE_EXPECT_CONTINUE, false);

		consumer.sign(postRequest);//对请求进行OAuth认证签名

		System.out.println(postRequest.getRequestLine().getUri());
		HttpResponse response = null;

		response = new DefaultHttpClient().execute(postRequest);//发送请求

		//String result = parseStringFromEntity(response.getEntity());

		return result;
	}

 与获取账号信息一样,我们在外部通过NameValuePair讲参数传入到请求中。

然后我们为发送按钮,添加一个监听器

sendStatus = (ImageButton) findViewById(R.id.send_right);
sendStatus.setOnClickListener(new sendStatusListener());

 取得EditText中用户输入的文字

text = (EditText) findViewById(R.id.editStatus);
String statustext = text.getText().toString();

给EditText设置一个监听器,用来监控用户输入的字符数

text.addTextChangedListener(new textWatcher());
/*
	 * 监控EditText改变情况,记录输入的字符数
	 */
	class textWatcher implements TextWatcher {

		@Override
		public void afterTextChanged(Editable arg0) {
			// TODO Auto-generated method stub
			textcount.setText("" + text.getText().toString().length());
		}

		@Override
		public void beforeTextChanged(CharSequence s, int start, int count,
				int after) {
			// TODO Auto-generated method stub

		}

		@Override
		public void onTextChanged(CharSequence s, int start, int before,
				int count) {
			// TODO Auto-generated method stub

		}

	}

 看下发送微博监听器中的代码:

	/*
	 * 发送微博按钮的监听
	 */
	class sendStatusListener implements OnClickListener {

		@Override
		public void onClick(View v) {
			// TODO Auto-generated method stub
			WeiBoClient weibo = new WeiBoClient(SinaConstant.CONSUMER_KEY,
				SinaConstant.CONSUMER_SECRET, access_token, access_secret);
		List<NameValuePair> params = new ArrayList<NameValuePair>();
		BasicNameValuePair sourcepair = new BasicNameValuePair("source",				SinaConstant.CONSUMER_SECRET);
		BasicNameValuePair statuspair = new BasicNameValuePair("status", status);
		params.add(sourcepair);
		params.add(statuspair);
		weibo.doPost("http://api.t.sina.com.cn/statuses/update.json", params);
		}

	}

 

WeiBoClient类参考Android:SNS客户端开发二:获取账号资料中的内容,我们只需要将本文章开始的post方法添加到其中就可以了。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics