• .NET调用新浪微博开放平台接口的代码示例


     

    使用新浪微博开放平台接口,需要先申请一帐号,申请方法: @微博开放平台 发送私信,或者给open_sina_mblog@vip.sina.com发邮件,附上您的email,微博个人主页,电话,和简单介绍。

    我们发了申请邮件后,不到1小时就收到了申请通过的邮件。然后进入新浪微博开放平台查看相关文档,在文档中(使用Basic Auth进行用户验证)发现新浪微博开发团队推荐了园子里的Q.Lee.lulu写的一篇博文:访问需要HTTP Basic Authentication认证的资源的各种语言的实现。这篇文章成为了我们的重要参考,但该文只是针对“GET”请求的情况,而新浪微博开放平台接口要求HTTP请求方式为“POST”,我们又参考了园子里的乌生鱼汤写的另一篇博文: 使用HttpWebRequest发送自定义POST请求。在这里感谢两位园友的分享!

    接下来,我们开始.NET调用新浪微博开放平台接口之旅。

    1. 首先我们要获取一个App Key,在新浪微博开放平台的“我的应用”中创建一个应用,就会生成App Key,假设是123456。

    2. 在新浪微博API文档中找到你想调用的API,这里我们假定调用发表微博的API-statuses/update,url是http://api.t.sina.com.cn/statuses/update.json,POST的参数:source=appkey&status=微博内容。其中appkey就是之前获取的App Key。

    3. 准备数据

      1) 准备用户验证数据:

    string username = "t@cnblogs.com";
    string password = "cnblogs.com";
    string usernamePassword = username + ":" + password;

      username是你的微博登录用户名,password是你的博客密码。

      2) 准备调用的URL及需要POST的数据:

    string url = "http://api.t.sina.com.cn/statuses/update.json";
    string news_title = "VS2010网剧合集:讲述程序员的爱情故事";
    int news_id = 62747;
    string t_news = string.Format("{0},http://news.cnblogs.com/n/{1}/", news_title, news_id );
    string data = "source=123456&status=" + System.Web.HttpUtility.UrlEncode(t_news);

    4. 准备用于发起请求的HttpWebRequest对象:

    System.Net.WebRequest webRequest = System.Net.WebRequest.Create(url);
    System.Net.HttpWebRequest httpRequest
    = webRequest as System.Net.HttpWebRequest;

    5. 准备用于用户验证的凭据:

    System.Net.CredentialCache myCache = new System.Net.CredentialCache();
    myCache.Add(
    new Uri(url), "Basic", new System.Net.NetworkCredential(username, password));
    httpRequest.Credentials
    = myCache;
    httpRequest.Headers.Add(
    "Authorization", "Basic " +
    Convert.ToBase64String(
    new System.Text.ASCIIEncoding().GetBytes(usernamePassword)));

    6. 发起POST请求:

    httpRequest.Method = "POST";
    httpRequest.ContentType
    = "application/x-www-form-urlencoded";
    System.Text.Encoding encoding
    = System.Text.Encoding.ASCII;
    byte[] bytesToPost = encoding.GetBytes(data);
    httpRequest.ContentLength
    = bytesToPost.Length;
    System.IO.Stream requestStream
    = httpRequest.GetRequestStream();
    requestStream.Write(bytesToPost,
    0, bytesToPost.Length);
    requestStream.Close();

    上述代码成功执行后,就会把内容发到了你的微博上了。

    7. 获取服务端的响应内容:

    System.Net.WebResponse wr = httpRequest.GetResponse();
    System.IO.Stream receiveStream
    = wr.GetResponseStream();
    using (System.IO.StreamReader reader = new System.IO.StreamReader(receiveStream, System.Text.Encoding.UTF8))
    {
    string responseContent = reader.ReadToEnd();
    }

    好了,.NET调用新浪微博开放平台接口之旅就完成了,很简单吧。

    如果没有Q.Lee.lulu乌生鱼汤的文章作为参考,对我们来说就不会这么轻松,这也许就是分享的价值吧,你的一点小经验却可能给别人带来很大的帮助。

    所以,我们也来分享一下,虽然不算什么经验,只是一个整理,但也许会对需要的人有帮助。
    转发自:http://blog.163.com/da7_1@126/blog/static/10407267820107204730339/

  • 相关阅读:
    绝对定位和相对定位的内幕
    水平居中和垂直居中
    玩转html5<canvas>画图
    基本排序算法
    很好用的canvas
    IE浏览器存在的setAttribute bug
    js 高程 函数节流 throttle() 分析与优化
    js apply()、call() 使用参考
    js 高程 22.1.4 函数绑定 bind() 封装分析
    事件处理程序中 this 的指向
  • 原文地址:https://www.cnblogs.com/waters/p/2088304.html
Copyright © 2020-2023  润新知