0

私は自分の問題に対する答えを数日間探していましたが、残念ながら運がありませんでした. ここにいる皆さんが私を助けてくれることを願っています。

したがって、私がやりたいことは、最近のブックマーク (delicious 用語では「投稿」) を返す、delicious.com API に対する単純な呼び出しです。したがって、次の URIを使用して、delicious.com にログインするための資格情報を入力するだけです。

標準の .NET4 コンソール アプリケーションから HttpWebRequest の魔法と Credentials を設定してこれを行うと、期待どおりに動作します。WP7 エミュレーターで同じ基本的な HttpWebRequest を実行しようとすると、「リモート サーバーがエラーを返しました: NotFound.」という WebException が発生します。この例外を深く掘り下げると、応答の StatusDescription が「Unauthorized」であることがわかります。認証がまったく行われていないようです。

次に、資格情報を設定すると問題が発生することを読んだので、「Authorization」RequestHeaderを直接設定することを試みました。なんと、結果は同じでした。

私は次のコードになり、アイデアがありませんでした。ここの誰かが私を助けて、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がすでに述べたように、機能していなかったのはエミュレーター通信でした。完全に新しいWin7をセットアップし、WP7.1 SDK(および7.1.1 Update)をインストールすると、期待どおりに動作します。そのため、エミュレータからの呼び出しが何かでブロックされたようです。それが何だったのかわかりませんが、今は機能しているのであまり気にしません。

Shawnは、エミュレーターとWebに問題が発生することがあり、それが私を正しい方向に導いてくれたことを指摘してくれてありがとう。

于 2012-05-09T06:29:07.630 に答える