2011-12-29 44 views
0

我(試圖)開發一個WPF(C#)應用程序,它只是在Diigo.com配置文件中獲取(或至少應該獲取)我保存的書籤。我發現的唯一有用的網頁是this。它說,我必須使用HTTP基本認證來獲得自我認證,然後發出請求。但不明白C#如何處理它!我在下面提出的唯一解決方案是將整個HTML源打印到控制檯窗口。使用C#進行Diigo的HTTP基本認證:如何讀取響應?

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基本身份驗證? 歡迎任何幫助或建議!

回答

0

好吧,我解決了一些後,這個問題(不是真的一般般)的努力。下面的代碼從服務器獲取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是從服務器返回 還this鏈接是入門API有用的JSON響應。

1

如果您嘗試與服務通話,則可能需要使用Windows Communication Foundation (WCF)。它專爲解決與服務通信相關的問題而設計,如讀取/寫入XML和JSON,以及協商傳輸機制(如HTTP)。

本質上,WCF將幫助您完成所有使用HttpRequest對象和操作字符串的「管道」工作。你的問題已經被這個框架解決了。如果可以,請使用它。

+0

是不是有其他方法?我的意思是不使用WCF – 2011-12-30 12:27:42

相關問題