使用c#的Diigo的HTTP基本授权:如何读取响应

本文关键字:何读取 响应 读取 授权 Diigo HTTP 使用 | 更新日期: 2023-09-27 18:18:58

我正在(尝试)开发一个WPF (c#)应用程序,它只是得到(或至少应该得到)我在Diigo.com配置文件中保存的书签。我找到的唯一有用的页面是这个。它说我必须使用HTTP基本身份验证来获得我的自我身份验证并提出请求。但是不理解c#是如何处理它的!我在下面提出的唯一解决方案只是将整个HTML源代码打印到控制台窗口。

string url = "http://www.diigo.com/sign-in";
WebRequest myReq = WebRequest.Create(url);
string usernamePassword = "<username>:<password>";
CedentialCache mycache = new CredentialCache();
mycache.Add(new Uri(url), "Basic", new NetworkCredential("username", "password"));
myReq.Credentials = mycache;
myReq.Headers.Add("Authorization", "Basic " + Convert.ToBase64String(new     ASCIIEncoding().GetBytes(usernamePassword)));
 //Send and receive the response
WebResponse wr = myReq.GetResponse();
Stream receiveStream = wr.GetResponseStream();
StreamReader reader = new StreamReader(receiveStream, Encoding.UTF8);
string content = reader.ReadToEnd();
Console.Write(content);

这里的用户名和密码是硬编码的,但他们当然会来自一些txtUsername.Text的东西。之后如何读取和解析JSON响应呢?我需要做什么来获得我的应用程序或我自己的HTTP基本认证?欢迎任何帮助或建议!

使用c#的Diigo的HTTP基本授权:如何读取响应

如果你正在尝试与服务通信,你可能想使用Windows通信基金会(WCF)。它专门设计用于解决与服务通信相关的问题,例如读/写XML和JSON,以及协商传输机制(如HTTP)。

从本质上讲,WCF将为您省去处理HttpRequest对象和操作字符串的所有"管道"工作。这个框架已经解决了您的问题。

好吧,经过一些(不是真正的一些)努力,我解决了这个问题。下面的代码从服务器获取JSON响应,然后可以使用任何首选方法对其进行解析。

 string key = "diigo api key";
 string username = "username";
 string pass = "password";
 string url = "https://secure.diigo.com/api/v2/";     
 string requestUrl = url + "bookmarks?key=" + key + "&user=" + username + "&count=5";
 HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create(requestUrl);
 string usernamePassword = username + ":" + pass;
 myReq.Timeout = 20000;
 myReq.UserAgent = "Sample VS2010";
 //Use the CredentialCache so we can attach the authentication to the request
 CredentialCache mycache = new CredentialCache();
 //this perform Basic auth
 mycache.Add(new Uri(requestUrl), "Basic", new NetworkCredential(username, pass));
 myReq.Credentials = mycache;
 myReq.Headers.Add("Authorization", "Basic " + Convert.ToBase64String(new ASCIIEncoding().GetBytes(usernamePassword)));
  //Send and receive the response
  WebResponse wr = myReq.GetResponse();
  Stream receiveStream = wr.GetResponseStream();
  StreamReader reader = new StreamReader(receiveStream, Encoding.UTF8);
  string content = reader.ReadToEnd();
  Console.Write(content);

content是服务器返回的JSON响应