2012-05-02 2 views
0

나는 며칠 동안 내 문제에 대한 해답을 찾고 있었지만 슬프게도 운이 없었습니다. 나는 너희들이 여기서 나를 도울 수 있기를 바랍니다.Windows Phone 7에서 HttpWebRequests를 수행하는 방법은 무엇입니까?

그래서 내가하고 싶은 것은 최근 북마크 (맛있는 용어로 "게시물")를 반환하는 delicious.com API에 대한 간단한 호출입니다. 따라서 다음과 같이 URI을 사용하고 delicious.com에 로그인하기위한 자격 증명을 입력하면됩니다.

HttpWebRequest의 마법과 함께 표준 .NET4 콘솔 응용 프로그램에서이 작업을 수행하고 자격 증명을 설정하면 예상대로 작동합니다. WP7 에뮬레이터에서 동일한 기본 HttpWebRequest를 수행하려고하면 "원격 서버가 오류를 반환했습니다 : NotFound."라는 WebException이 발생합니다. 이 예외를 자세히 살펴보면 내 응답에 StatusDescription이 "Unauthorized"라는 것을 알 수 있습니다. 인증 문제가 전혀없는 것처럼 보입니다.

다음으로 나는 Credentials sometiemes가 문제가되는 설정을 읽으면서 "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; 
} 

미리 감사드립니다.

+1

에뮬레이터가 웹에서 작동하지 않는 경우가 있습니다. 보통 에뮬레이터 브라우저를 사용하여 에뮬레이터 문제인지 확인합니다. 대개 실패 할 것입니다. 실제 전화가있는 경우이를 통해 디버깅을 시도하십시오. 또 다른 테스트는 bing.com과 같은 것을 치면 결과가 돌아가는지 확인하는 것입니다. –

+0

에뮬레이터의 브라우저는 매번 시도해 볼 때마다 잘 작동합니다. 또한 bing.com에 가면 WebRequest가 행복하게 반환됩니다. WP7 용으로 개발 한 첫 번째 응용 프로그램이므로 아직 등록 된 개발자가 아니므로 장치의 debuggin은 아직 옵션이 아닙니다. 아마 99 달러를 쓰는 대신 더 많은 시간을 낭비해야합니다 ... – bbohac

답변

0

이제 알겠지만 제 코드는 절대적으로 정확하고 효과적입니다. Shawn Kendrot가 이미 언급 한 것처럼, 에뮬레이터와의 통신은 작동하지 않습니다. 완전히 새로운 Win7을 설치하고 WP7.1 SDK (및 7.1.1 업데이트)를 설치하면 예상대로 작동합니다. 그래서 뭔가 에뮬레이터에서 내 통화를 차단 한 것 같습니다. 나는 그것이 무엇인지 전혀 몰랐다. 그러나 나는 인정해야한다, 나는 그것이 지금 일하고 있어도별로 신경 쓰지 않는다.

에뮬레이터와 웹에 때로는 문제가 있음을 지적 해 주신 Shawn에게 저를 올바른 방향으로 끌어 들였습니다.

관련 문제