2011-01-30 15 views
6

Próbuję uwierzytelnić się za pomocą interfejsu API Huddle za pomocą emulatora systemu Windows Phone 7. Jednak nie osiągam żadnego sukcesu. Wciąż dostaję "Serwer zdalny zwrócił błąd: NotFound". Próbowałem nawet "osuszyć" mój kod i po prostu wypróbować prostą stronę internetową, np. Google, ale wciąż otrzymujemy ten sam wynik.Wysyłanie HttpWebRequest "Serwer zdalny zwrócił błąd: NotFound" w systemie Windows Phone 7

Mam następujący kod:

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 
); 

Wykonanie zawsze kończy się w sekcji catch. Jednak po obejrzeniu Fiddler2 wydaje się, że w witrynie google.com nie ma żadnego ruchu. Wydaje się, że prośba nie została złożona.

Widziałem podobny problem tutaj Retrieve XML from https using WebClient/HttpWebRequest - WP7, ale używam standardowego portu, więc nie jestem pewien, czy jest to istotne. Próbowałem również uprościć kod zgodnie z postem, ale bez powodzenia.

Co ciekawe, najbardziej prawdopodobną opcją wydaje się być fakt, że nie mogą mieć możliwości sieci zdefiniowane w moim pliku AppManifestWM.xaml jak za HttpWebRequest Breaks On WP7, ale mój plik AppManifestWM.xaml wydaje się mieć to określono:

<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> 

Więc jestem zagubiony. Żądanie w rzeczywistości nie wydaje się występować, co prowadzi do tego, że coś mu zapobiega.

Aktualizacja:

Nic się nie zmieniło, ale pomyślałem, że to ślad stosu może 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)

Stan jest System.Net.WebExceptionStatus.UnknownError

Dzięki za poświęcony czas .

Odpowiedz

1

Ok, mam rozwiązać go ... ale nie wiem jak. Mój komputer nie został ponownie uruchomiony, mój kod się nie zmienił. Jedynym możliwym wyjaśnieniem jest to, że mój emulator kilka razy się zawiesił. Może coś tam.

Dzięki za poświęcony czas, jest to kod używam, który dobrze współpracuje z rwetes API:

   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

To może być tylko kwestia rozwiązania połączenia sieciowego.

Czy można uzyskać dostęp do Internetu za pośrednictwem przeglądarki IE i formantu WebBrowser w aplikacji?

Możesz mieć proxy w drodze. Sprawdź, czy ten doco pomaga w tym zakresie.

Proxy Support for Windows Phone Emulator

+0

Dzięki, Mick. Próbowałem IE "applet" w systemie operacyjnym, który działa. Dodałem również kontrolkę WebBrowser do tej samej strony, która również działa dobrze. Nie używam proxy, o ile wiem. –

2

Czy masz Skrzypek działa? Ten błąd pojawia się wielokrotnie, gdy Fiddler jest podłączony do mojego stosu sieciowego. Z Fiddler wyłączony, bez problemów.

Chciałbym usłyszeć, dlaczego tak się dzieje, jeśli ktoś wie ...

Cheers

+0

Interesujący punkt. Nie pamiętam, teraz. Z pewnością byłbym w pewnym momencie, ale w momencie niepowodzenia nie mogłem powiedzieć. –

3

Pracowałem kilka godzin z dokładnie takie same objawy jak oryginalnego plakatu. Następnie zamknąłem Fiddler2, jak zasugerowałem powyżej. A potem działa. Nigdy więcej "Serwer zdalny zwrócił błąd: NotFound".

Magia! Dziękuję, Kellyb. Powinien zostać przegłosowany, ale nie mam wystarczająco dużo kredytów.

2

Zamknięcie Fiddler2 rozwiązało mój problem.

+0

dzięki! nigdy nie myślałem, że to może być ... – Thomas

6

Nigdy używać Fiddler2 ale miał dokładne ten sam problem przy opracowywaniu telefonu aplikację Windows.

Dla mnie przyczyna była zupełnie inna: W WMAppManifest.xml właśnie brakuje ID_CAP_NETWORKING!

Odkąd dostał „nie znaleziono” wyjątek, a nie „nie jest obsługiwany wyjątek” Próbowałem prawie wszystkiego innego, aż znalazłem prawdziwą przyczynę problemu ... ;-)

Wolę wyłączenie wszystkich CAPS i włączać tylko te, których naprawdę potrzebuje aplikacja, ponieważ użytkownicy nie zrozumieją/nie zaakceptują, jeśli aplikacja potrzebuje dostępu do "wszystkiego" ;-)

Powiązane problemy