111,126
社区成员
发帖
与我相关
我的任务
分享
public string getHeader(string accesstoken)
{
Uri uri = new Uri(saying);
string nonce = GenerateNonce();
string timeStamp = GenerateTimeStamp();
string normalizeUrl, normalizedRequestParameters;
string sig = GenerateSignature(uri, AppKey, AppKeySecret, accesstoken, AccessTokenSecret, "POST", timeStamp, nonce, out normalizeUrl, out normalizedRequestParameters, true);
sig = UrlEncode(sig);
//构造OAuth头部
StringBuilder oauthHeader = new StringBuilder();
oauthHeader.AppendFormat(":OAuth realm=\"http://sp.example.com/\",oauth_consumer_key={0},", AppKey);
oauthHeader.AppendFormat("oauth_token={0},", accesstoken);
oauthHeader.AppendFormat("oauth_signature_method={0},", "HMAC-SHA1");
oauthHeader.AppendFormat("oauth_signature={0},", sig);
oauthHeader.AppendFormat("oauth_timestamp={0},", timeStamp);
oauthHeader.AppendFormat("oauth_nonce={0},", nonce);
oauthHeader.AppendFormat("oauth_version={0}", "1.0");
return oauthHeader.ToString();
}
public string AddSaying(string context,string accesstoken,DataType type)
{
string oauthHeader = getHeader(accesstoken);
//构造请求
StringBuilder requestBody = new StringBuilder("<?xml version='1.0' encoding='UTF-8'?>");
requestBody.Append("<entry xmlns:ns0=\"http://www.w3.org/2005/Atom\" xmlns:db=\"http://www.douban.com/xmlns/\">"); requestBody.Append("<content>C# OAuth</content>");
requestBody.Append("</entry>");
Encoding encoding = Encoding.GetEncoding("UTF-8");
byte[] data = encoding.GetBytes(requestBody.ToString());
// Http Request的设置
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(new Uri(saying));
request.Headers.Set("Authorization", oauthHeader);
request.ContentType = "application/atom+xml";
request.Method = "POST";
request.ContentLength = data.Length;
Stream requestStream = request.GetRequestStream();
requestStream.Write(data, 0, data.Length);
requestStream.Close();
try
{
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader stream = new StreamReader(response.GetResponseStream(), System.Text.Encoding.UTF8); string responseBody = stream.ReadToEnd();
stream.Close();
response.Close();
return("发送广播成功");
}
catch (WebException e)
{
StreamReader stream = new StreamReader(e.Response.GetResponseStream(), System.Text.Encoding.UTF8);
string responseBody = stream.ReadToEnd();
stream.Close();
return "发送广播失败,原因: " + responseBody;
}
}