2011-09-26 85 views
2

我們正在使用C2DM並正在使用C#編寫服務器應用程序。C2DM授權密鑰CRLF和.Net WebRequest

我們使用WebRequest組件獲取帶有POST的授權密鑰。這工作,我們得到一個編碼的授權密鑰。當我們將此密鑰添加到要發送消息的請求的auth頭時,問題就出現了。

WebRequest request = WebRequest.Create("url"); 
... 
request.Headers.Add(HttpRequestHeader.Authorization, "GoogleLogin auth=" + AuthorizationKey); 

由於密鑰具有一個LF,我們得到一個異常...

Unhandled Exception: System.ArgumentException: Specified value has invalid CRLF characters. 
Parameter name: value 

    at System.Net.WebHeaderCollection.CheckBadChars(String name, Boolean isHeaderValue) 

    at System.Net.WebHeaderCollection.Add(String name, String value) 

這似乎是CheckBadChars()被拒絕授權密鑰,因爲它認爲有一個CRLF在關鍵,實際上只有一個LF。

有沒有人有任何想法我們如何解決這個問題?

回答

0

也許你剛剛得到一個換行符,你應該刪除?

編輯:我閱讀文檔(在http://code.google.com/apis/accounts/docs/AuthForInstalledApps.html#Response),它說你應該回去,看起來像這樣的迴應:

SID=DQAAAGgA...7Zg8CTN 
LSID=DQAAAGsA...lk8BBbG 
Auth=DQAAAGgA...dk3fA5N 

有你的三個換行符。所以你需要做的是挑出從Auth=開始的行,並從那裏獲取授權令牌。

+0

不,我們在密鑰中有3個LF和0個CR。 – MarkB

+0

增加了可能的解決方案來回答。 –