调用新浪接口记录

调用新浪接口几个大致步骤
首先必须有:
1.<!--微博的开放平台ApiKey -->

<add key="ApiKey" value="1234567890"/>

2.<!--微博开放平台ApiKeySecret-->

<add key="ApiKeySecret" value="0aaaaaaaaaaaaaaaaaaaaaaaa"/>


: 请求用户授权Token: https://api.weibo.com/oauth2/authorize
参数 redirect_uri  需要与申请的应用的回调地址一致(上线后只要回调地址和你的上线网站在同一个域名下就可以);

本地测试最好是将127.0.0.1:10001/ 配置成域名的形式 local.host.com/;

配置:C:WINDOWSsystem32driversetc     

    127.0.0.1       localhost(原有的)

    127.0.0.1       local.host.com(新增配置)就ok了。


:获取Access Token:https://api.weibo.com/oauth2/access_token
  在一授权成功之后会返回code;这个code就是获取ACCESS_TOKEN的必传参数之一。


:调用其它接口:
  调用二成功之后会返回调用其它接口必须要的access_token 和当前授权用户的微博id

  只要授权成功并成功得到access_token 调用其它接口就好办了,如:

1:发微博的接口:https://api.weibo.com/2/statuses/update.json

  只要将微博的内容UTF-8编码(System.Web.HttpUtility.UrlEncode(WeiboContent, System.Text.Encoding.GetEncoding("UTF-8"))),微博中如果想放个  url链接也直接放地址即可;

2:调用关注微博接口:https://api.weibo.com/2/friendships/create.json

  如果当前用户已经关注了你传过去需要关注的微博id的用户,服务器就会返回400的错误(不知为什么),只需在程序中try catch 一下就可以了

关注用户的post方法做了小改动,如果只指定方法总是返回403错误 代码:
        /// <summary>  
        /// 通过post请求指定url地址并返回结果(将参数写入网络流中)  
        /// </summary>  
        /// <param name="url">求地址</param>  
        /// <param name="nvc">参数hashtable</param>  
        /// <returns></returns>  
public static string RequestUrl_post(string url, Dictionary<string, string> nvc)

        {
            string param = "";
            foreach (string key in nvc.Keys)
            {
                param += "&" + key + "=" + nvc[key];
            }
            if (param.StartsWith("&"))
                param = param.Substring(1);
            byte[] bs = Encoding.ASCII.GetBytes(param); 
            string str = string.Empty;
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            request.Method = "POST";
            request.MaximumAutomaticRedirections = 3;
            request.Timeout = 0x2710;
            request.C;
            request.ContentLength = bs.Length;

            using (Stream reqStream = request.GetRequestStream())
            {
                reqStream.Write(bs, 0, bs.Length);
            }
            using (Stream responseStream = ((HttpWebResponse)request.GetResponse()).GetResponseStream())
            {
                using (StreamReader reader = new StreamReader(responseStream))
                {
                    str = reader.ReadToEnd();
                }
            }
            return str;
        }

原文地址:https://www.cnblogs.com/mhker/p/3571852.html