0

几天来,我一直在寻找问题的答案,但遗憾的是没有运气。我希望你们在这里可以帮助我。

所以,我想做的只是一个简单的对delicious.com API 的调用,它返回我最近的书签(美味术语中的“帖子”)。因此,您只需使用以下 URI并输入您的凭据即可登录到 nice.com。

当我从具有 HttpWebRequest 魔力的标准 .NET4 控制台应用程序执行此操作并设置凭据时,它按预期工作。尝试在 WP7 模拟器上执行相同的基本 HttpWebRequest 会导致 WebException 指出“远程服务器返回错误:NotFound。”。当深入研究这个异常时,我可以看到我的响应有一个“未授权”的状态描述。似乎根本没有发生任何身份验证。

接下来我尝试——当我读到设置凭据有时会导致问题时——直接设置“授权”请求头。你猜怎么着,结果是一样的。

我最终得到了以下代码并且没有想法。我希望这里有人能够帮助我并指出方法,我如何从我的 WP7 访问我的书签。

public void RetrieveRecentBookmarks(string userName, string password)
{
    HttpWebRequest request = HttpWebRequest.CreateHttp(requestString);

    byte[] bytes = System.Text.UTF8Encoding.UTF8.GetBytes(userName + ":" + password)
    string authInfo = Convert.ToBase64String(bytes);
    request.Headers[System.Net.HttpRequestHeader.Authorization] = "Basic " + authInfo;

    RequestState state = new RequestState(request);
    IAsyncResult result = request.BeginGetResponse(GetResponseCallback, state);
}

private static void GetResponseCallback(IAsyncResult asynchronousResult)
{
    RequestState state = asynchronousResult.AsyncState as RequestState;
    HttpWebRequest request = state.Request as HttpWebRequest;

    // Here is where it breaks...
    HttpWebResponse response = request.EndGetResponse(asynchronousResult) as HttpWebResponse;
}

提前致谢!

4

1 回答 1

0

据我所知,我的代码绝对正确且有效。正如 Shawn Kendrot 已经提到的,没有工作的是 Emulator 通信。我设置了一个全新的 Win7,安装了 WP7.1 SDK(和 7.1.1 更新),它按预期工作。所以似乎有什么东西阻止了我从模拟器的调用。我不知道它是什么,但我必须承认,我不太在乎它现在正在工作。

感谢 Shawn 指出模拟器和网络有时会出现问题,这将我推向了正确的方向。

于 2012-05-09T06:29:07.630 回答