C2DM授权密钥CRLF和.Net WebRequest

时间:2011-09-26 18:12:21

标签: .net android-c2dm

我们正在使用C2DM并在C#中编写服务器应用程序。

我们使用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。

有没有人有任何想法我们如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

也许你最终会在你应该删除的时候获得一个换行符?

编辑:我阅读了文档(位于http://code.google.com/apis/accounts/docs/AuthForInstalledApps.html#Response),并说它应该会收到如下响应:

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

你的三个阵容。所以你需要做的是选择以Auth=开头的行并从那里获取授权令牌。