不要获取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.

不要获取Twitter Api的完整Json (c#,仅应用程序授权)

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;
    }