2011-01-30 36 views
6

Tôi đang cố gắng xác thực đối với API Trò chuyện nhóm bằng Trình giả lập Windows Phone 7. Tuy nhiên, tôi không nhận được bất kỳ thành công nào. Tôi tiếp tục nhận được "Máy chủ từ xa trả về lỗi: NotFound". Tôi thậm chí đã cố gắng "dumbing xuống" mã của tôi và chỉ cần cố gắng một trang web thẳng, ví dụ như. Google nhưng vẫn nhận được kết quả tương tự.HttpWebRequest trả về "Máy chủ từ xa đã trả về lỗi: NotFound" trên Windows Phone 7

Tôi có đoạn mã sau:

string url = "http://www.google.com"; 

HttpWebRequest client= WebRequest.CreateHttp(new Uri(url)) as HttpWebRequest; 

client.AllowReadStreamBuffering = true; 

// Call and handle the response. 
client.BeginGetResponse(
    (asResult) => 
    { 
    Dispatcher.BeginInvoke(
    () => 
    { 
    try 
    { 
     var response = client.EndGetResponse(asResult); 
     System.IO.StreamReader reader = new System.IO.StreamReader(response.GetResponseStream()); 
     string responseString = reader.ReadToEnd(); 

    } 
    catch (WebException failure) 
    { 
     throw failure; 
    } 
    }); 
    }, 
    null 
); 

Thực hiện luôn kết thúc trong phần bắt. Tuy nhiên, khi xem Fiddler2, dường như không có bất kỳ lưu lượng truy cập nào tới google.com. Vì vậy, yêu cầu dường như không được thực hiện.

Tôi đã gặp sự cố tương tự ở đây Retrieve XML from https using WebClient/HttpWebRequest - WP7, nhưng tôi đang sử dụng cổng chuẩn nên không chắc chắn điều này có liên quan hay không. Tôi cũng đã thử đơn giản hóa mã theo bài đăng, nhưng không thành công.

Điều thú vị là, tùy chọn có khả năng nhất có vẻ là vì tôi không thể có khả năng mạng được xác định trong tập tin AppManifestWM.xaml tôi theo HttpWebRequest Breaks On WP7, nhưng tập tin AppManifestWM.xaml của tôi dường như có này định nghĩa:

<Deployment xmlns="http://schemas.microsoft.com/windowsphone/2009/deployment" AppPlatformVersion="7.0"> 
    <App xmlns="" ProductID="{ac5b5d62-573c-4134-b290-0ad4f678ad7f}" Title="xxx.WindowsPhone7.Client" RuntimeType="Silverlight" Version="1.0.0.0" Genre="apps.normal" Author="xxx.WindowsPhone7.Client author" Description="Sample description" Publisher="xxx.WindowsPhone7.Client publisher"> 
    <IconPath IsRelative="true" IsResource="false">ApplicationIcon.png</IconPath> 
    <Capabilities> 
     <Capability Name="ID_CAP_NETWORKING" /> 
     <Capability Name="ID_CAP_LOCATION" /> 
     <Capability Name="ID_CAP_SENSORS" /> 
     <Capability Name="ID_CAP_MICROPHONE" /> 
     <Capability Name="ID_CAP_MEDIALIB" /> 
     <Capability Name="ID_CAP_GAMERSERVICES" /> 
     <Capability Name="ID_CAP_PHONEDIALER" /> 
     <Capability Name="ID_CAP_PUSH_NOTIFICATION" /> 
     <Capability Name="ID_CAP_WEBBROWSERCOMPONENT" /> 
    </Capabilities> 
    <Tasks> 
     <DefaultTask Name ="_default" NavigationPage="MainPage.xaml"/> 
    </Tasks> 
    <Tokens> 
     <PrimaryToken TokenID="xxx.WindowsPhone7.ClientToken" TaskName="_default"> 
     <TemplateType5> 
      <BackgroundImageURI IsRelative="true" IsResource="false">Background.png</BackgroundImageURI> 
      <Count>0</Count> 
      <Title>xxx.WindowsPhone7.Client</Title> 
     </TemplateType5> 
     </PrimaryToken> 
    </Tokens> 
    </App> 
</Deployment> 

Vì vậy, tôi đang thua lỗ. Yêu cầu này dường như không thực sự xảy ra, khiến tôi nghĩ rằng điều gì đó đang ngăn nó.

Cập nhật:

Không có gì thay đổi, nhưng nghĩ stack trace này có thể heko:

System.Net.WebException was unhandled Message=The remote server returned an error: NotFound. StackTrace: at System.Net.Browser.ClientHttpWebRequest.InternalEndGetResponse(IAsyncResult asyncResult) at System.Net.Browser.ClientHttpWebRequest.EndGetResponse(IAsyncResult asyncResult) at xxx.WindowsPhone7.Client.Views.AddHuddleUserPage.<>c__DisplayClass2.<>c__DisplayClass4.b__1() at System.Reflection.RuntimeMethodInfo.InternalInvoke(RuntimeMethodInfo rtmi, Object obj, BindingFlags invokeAttr, Binder binder, Object parameters, CultureInfo culture, Boolean isBinderDefault, Assembly caller, Boolean verifyAccess, StackCrawlMark& stackMark) at System.Reflection.RuntimeMethodInfo.InternalInvoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, StackCrawlMark& stackMark) at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters) at System.Delegate.DynamicInvokeOne(Object[] args) at System.MulticastDelegate.DynamicInvokeImpl(Object[] args) at System.Delegate.DynamicInvoke(Object[] args) at System.Windows.Threading.DispatcherOperation.Invoke() at System.Windows.Threading.Dispatcher.Dispatch(DispatcherPriority priority) at System.Windows.Threading.Dispatcher.OnInvoke(Object context) at System.Windows.Hosting.CallbackCookie.Invoke(Object[] args) at System.Windows.Hosting.DelegateWrapper.InternalInvoke(Object[] args) at System.Windows.RuntimeHost.ManagedHost.InvokeDelegate(IntPtr pHandle, Int32 nParamCount, ScriptParam[] pParams, ScriptParam& pResult)

Tình trạng là System.Net.WebExceptionStatus.UnknownError

Cảm ơn thời gian của bạn .

Trả lời

1

Ok, tôi đã giải quyết được ... nhưng không biết làm cách nào. Máy của tôi chưa được khởi động lại, mã của tôi chưa thay đổi. Lời giải thích duy nhất có thể là giả lập của tôi đã sụp đổ một vài lần. Có lẽ một cái gì đó trong đó.

Cảm ơn thời gian của bạn, đây là mã Tôi đang sử dụng, trong đó hoạt động tốt với các API Huddle:

   string url = "https://api.huddle.net/v1/xml/workspaces"; ; 

       HttpWebRequest client= WebRequest.CreateHttp(new Uri(url)) as HttpWebRequest; 

       client.Credentials = new NetworkCredential(ViewModel.UserAccount.UserName, ViewModel.UserAccount.Password); 
       client.AllowReadStreamBuffering = true; 

       // Call and handle the response. 
       client.BeginGetResponse(
        (asResult) => 
        { 
         Dispatcher.BeginInvoke(
          () => 
          { 
           try 
           { 
            var response = client.EndGetResponse(asResult); 
            System.IO.StreamReader reader = new System.IO.StreamReader(response.GetResponseStream()); 
            string responseString = reader.ReadToEnd(); 



                     } 
           catch (WebException failure) 
           { 
            MessageBox.Show(failure.Message, "Cannot authenticate", MessageBoxButton.OK); 
#if DEBUG 
            throw failure; 
#endif 
           } 
          }); 
        }, 
         null 
       ); 
0

Điều này có thể chỉ là vấn đề giải quyết kết nối mạng của bạn.

Bạn có thể truy cập web qua IE và điều khiển WebBrowser bên trong ứng dụng không?

Bạn có thể có proxy trong quá trình thực hiện. Xem liệu tài liệu này có giúp ích cho vấn đề đó hay không.

Proxy Support for Windows Phone Emulator

+0

Cảm ơn, Mick. Tôi đã thử IE "applet" trong hệ điều hành, hoạt động. Cũng đã thêm một điều khiển WebBrowser vào cùng một trang, cũng hoạt động tốt. Tôi không sử dụng một proxy như xa như tôi biết. –

2

Bạn đã Fiddler chạy? Tôi nhận được lỗi này nhiều lần khi Fiddler được gắn vào ngăn xếp mạng của tôi. Với Fiddler, không có vấn đề gì.

Tôi muốn nghe lý do vì sao nếu ai đó biết ...

Chúc mừng

+0

Điểm thú vị. Tôi không thể nhớ, bây giờ. Tôi chắc chắn sẽ có một lúc, nhưng tại thời điểm thất bại, tôi không thể nói. –

3

Tôi đã làm việc vài giờ với các triệu chứng giống hệt như áp phích gốc. Sau đó, tôi đóng Fiddler2 như đề xuất ở trên. Và sau đó nó hoạt động. Không còn "Máy chủ từ xa trả về và lỗi: NotFound".

Magic! Cảm ơn bạn, kellyb. Nên có upvoted nhưng tôi không có đủ tín dụng.

2

Tắt Fiddler2 đã giải quyết được sự cố của tôi.

+0

cảm ơn! không bao giờ nghĩ đây có thể là ... – Thomas

6

Không bao giờ sử dụng Fiddler2 nhưng đã chính xác cùng một vấn đề khi phát triển một điện thoại ứng dụng Windows.

Đối với tôi nguyên nhân khá khác nhau: WMAppManifest.xml chỉ thiếu ID_CAP_NETWORKING!

Kể từ khi tôi có những "không tìm thấy" ngoại lệ và không phải là một "ngoại lệ không được hỗ trợ" Tôi đã cố gắng gần như mọi thứ khác cho đến khi tôi tìm ra nguyên nhân thực sự của vấn đề ... ;-)

tôi thích vô hiệu hóa tất cả CAPS và chỉ cho phép những ứng dụng thực sự cần vì người dùng sẽ không hiểu/chấp nhận nếu ứng dụng cần truy cập vào "mọi thứ" ;-)

Các vấn đề liên quan