0

我正在尝试将我的网站换成使用 OAuth 1.0a 来使用新的 Twitter 1.1 API。我能够使用 REST 客户端获得正确的响应,现在我正在尝试使用 c# 在我的网站上复制它。

我已经以适当的方式构建了我的标题,并且我已经验证了它们的格式是否适合 Twitter 正在寻找的内容。

我遇到的问题是我认为我实际上并没有发送请求。我这样说是因为我的应用程序几乎立即返回。该请求至少需要一秒钟左右的时间才能发送,而我的响应完全是空的,没有 401 或 400 状态代码。

下面我有实际发送请求的代码。我实际上是在发送请求,如果是这样,为什么我没有收到任何状态代码或任何东西。

在此先感谢您的帮助。

//string url = "https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=MYSCREENNAME&count=2";
string url = "https://api.twitter.com/1.1/statuses/user_timeline.json";

HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url);
webRequest.Method = "GET";
webRequest.Headers.Add("Authorization", authorizationHeaderParams);

try {
    var response = webRequest.GetResponse() as HttpWebResponse;
    if (response != null && response.StatusCode != HttpStatusCode.OK) {
        lblresponse.InnerText = "The request did not complete and returned status code: {0} " + response.StatusCode;
    }
    if (response != null) {
        var reader = new StreamReader(response.GetResponseStream());
        reader.ReadToEnd();
        lblresponse.InnerText += "success";
    }
} catch {
    lblresponse.InnerText += "fail";
}

所以是的,这段代码直接进入了 catch 块。我的想法是我实际上并没有发送请求,因为它不需要时间发生。我知道有一些库旨在使这更容易,但我更愿意自己学习如何做(在你们的帮助下)。

谢谢。

4

1 回答 1

1

在 400 或 401 的情况下,请求将引发异常。因此在 catch 块中捕获 System.Web.Exception 以查看是否存在 400 或 401。

catch(System.Web.Exception ex) {
   var errorReponse = (HttpWebResponse)ex.Response;
   var statusCode = errorReponse.StatusCode;
   lblresponse.InnerText += "fail";
}  
于 2013-04-17T21:21:14.753 回答