2011-04-10 34 views
0

我有這樣的代碼asp.net C#谷歌API的文檔 - 401未授權

DocumentsService vService = new DocumentsService("test"); 
vService.setUserCredentials("vUserName", "vPassword"); 
RequestSettings vSettings = new RequestSettings("test"); 
DocumentsRequest vDocReq = new DocumentsRequest(vSettings); 
Feed<Document> vFeed = vDocReq.GetEverything(); 
foreach (Document d in vFeed.Entries) { 
    lbxDocumente.Items.Add(d.Title + " " + d.Author); 
} 

爲什麼會出現這種異常?

System.Net.WebException: The remote server returned an error: (401) Unauthorized

回答

1

該行正試圖與實際字符串「vUserName」和「vPassword」驗證:爲了使用變量

vService.setUserCredentials("vUserName", "vPassword"); 

您的意思是它是這個吧,你已經在別處初始化了嗎?

vService.setUserCredentials(vUserName, vPassword); 

(什麼是與v前綴,順便說一下?我一般不喜歡這樣的前綴所有,但我從來沒有見過v像以前那樣一個前綴......)

編輯:你也沒有將請求與服務的任何地方聯繫起來。我試過這個代碼,並能正常工作:

DocumentsService service = new DocumentsService("test"); 
service.setUserCredentials(user, password); 
RequestSettings settings = new RequestSettings("test"); 
DocumentsRequest docReq = new DocumentsRequest(settings); 
docReq.Service = service; 
Feed<Document> feed = docReq.GetEverything(); 
foreach (Document d in feed.Entries) { 
    Console.WriteLine(d.Title); 
} 
+0

同樣的事情,因爲「vUserName」是用戶名,「vPassword」是密碼,和V前綴是變量 – xnl96 2011-04-10 09:31:23

+0

@ xnl96:這不是一樣的東西; ''vUserName「'是一個字符串文字; 'vUserName'是一個變量。他們是完全不同的東西。我強烈建議不要使用前綴,因爲它只是增加了混亂而沒有任何好處。無論如何,我相信您最大的問題是無法將服務與請求關聯 - 請參閱我的編輯。 – 2011-04-10 09:35:01

+0

非常感謝這是問題「docReq.Service = service; 」 – xnl96 2011-04-10 09:36:36