不要获取Twitter Api的完整Json (c#,仅应用程序授权)
本文关键字:应用程序 授权 Json 获取 Twitter Api | 更新日期: 2023-09-27 18:08:16
当我用c#向Twitter API发出请求时,我没有得到完整的Json。我使用以下代码:
public static async Task<string> GetTwitterList(string bearerToken)
{
WebRequest request = WebRequest.Create("https://api.twitter.com/1.1/lists/show.json?slug=odyssee&owner_screen_name=dieVanDeIlias");
request.Method = "GET";
request.Headers.Add("Authorization", String.Format("Bearer {0}", bearerToken));
request.Timeout = Timeout.Infinite;
WebResponse response = await request.GetResponseAsync();
Stream reponseStream = response.GetResponseStream();
Encoding encoder = System.Text.Encoding.GetEncoding("utf-8");
StreamReader readStream = new StreamReader(reponseStream, encoder);
Char[] read = new Char[256];
int count = readStream.Read(read, 0, 256);
String str = "000";
while (count > 0)
{
str = new String(read, 0, count);
count = readStream.Read(read, 0, 256);
}
readStream.Close();
response.Close();
return str;
}
我只使用应用程序授权。这是给Asp的。Net Web Pages应用程序,因此不是每个http/Web类都可用。除非在没有第三方库的情况下无法做到这一点,否则我不想使用它们……我正在使用Visual Studio Express 2013 for Web with . net version 4.5.
StreamReader。ReadToEnd方法为我工作!我现在的代码:
public static async Task<string> GetTwitterList(string bearerToken)
{
WebRequest request = WebRequest.Create("https://api.twitter.com/1.1/lists/statuses.json?slug=odyssee&owner_screen_name=dieVanDeIlias");
string result = "";
request.Method = "GET";
request.Headers.Add("Authorization", String.Format("Bearer {0}", bearerToken));
request.Timeout = Timeout.Infinite;
WebResponse response = await request.GetResponseAsync();
Encoding encoder = System.Text.Encoding.GetEncoding("utf-8");
string contentLength = response.Headers.Get("Content-Length");
int contentLengthInt = Convert.ToInt32(contentLength);
using (StreamReader sr = new StreamReader(response.GetResponseStream(), encoder))
{
while (sr.Peek() >= 0)
{
result = sr.ReadToEnd();
}
}
return result;
}