HttpWebRequest在Windows Phone 7上返回"远程服务器返回错误:NotFound"

Pro*_*m.X 6 httpwebrequest windows-phone-7

我正在尝试使用Windows Phone 7模拟器对Huddle API进行身份验证.但是,我没有取得任何成功.我一直得到"远程服务器返回错误:NotFound".我甚至试图"减少"我的代码,只是尝试一个直接的网站,例如.谷歌但仍然得到相同的结果.

我有以下代码:

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
 );
Run Code Online (Sandbox Code Playgroud)

执行总是在catch部分结束.但是,看过Fiddler2后,google.com似乎没有任何流量.所以似乎没有提出要求.

我在这里看到类似的问题使用WebClient/HttpWebRequest - WP7从https检索XML,但我使用的是标准端口,所以不确定这是否相关.我也尝试按照帖子简化代码,但没有成功.

有趣的是,最可能的选择似乎是因为我可能没有根据HttpWebRequest Breaks On WP7在我的AppManifestWM.xaml文件中定义网络功能,但我的AppManifestWM.xaml文件似乎已定义:

<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>
Run Code Online (Sandbox Code Playgroud)

所以我很茫然.该请求实际上似乎并没有发生,导致我认为某些事情正在阻止它.

更新:

没有任何改变,但认为这个堆栈跟踪可能heko:

System.Net.WebException未处理Message =远程服务器返回错误:NotFound.StackTrace:位于System.Net.Browser.ClientHttpWebRequest.EndGetResponse(IAsyncResult asyncResult)的System.Net.Browser.ClientHttpWebRequest.InternalEndGetResponse(IAsyncResult asyncResult)xxx.WindowsPhone7.Client.Views.AddHuddleUserPage.<> c__DisplayClass2.<> c__DisplayClass4.b__1 ()System.Reflection.RuntimeMethodInfo.InternalInvoke的System.Reflection.RuntimeMethodInfo.InternalInvoke(RuntimeMethodInfo rtmi,Object obj,BindingFlags invokeAttr,Binder binder,Object parameters,CultureInfo culture,Boolean isBinderDefault,Assembly caller,Boolean verifyAccess,StackCrawlMark&stackMark)在System.Delegate.DynamicInvokeOne(Object [] args)处的System.Reflection.MethodBase.Invoke(Object obj,Object []参数)处的对象obj,BindingFlags invokeAttr,Binder binder,Object []参数,CultureInfo文化,StackCrawlMark和stackMark) System.Windows.Threading.DispatcherOperation上的System.Delegate.DynamicInvoke(Object [] args)中的System.MulticastDelegate.DynamicInvokeImpl(Object [] args)系统中的System.Windows.Hshting.CallbackCookie.Invoke(Object [] args)中的System.Windows.Threading.Dispatcher.OnInvoke(对象上下文)中的System.Windows.Threading.Dispatcher.Dispatch(DispatcherPriority优先级)处的.Invoke() System.Windows.RuntimeHost.ManagedHost.InvokeDelegate中的.Windows.Hosting.DelegateWrapper.InternalInvoke(Object [] args)(IntPtr pHandle,Int32 nParamCount,ScriptParam [] pParams,ScriptParam&pResult)

状态为System.Net.WebExceptionStatus.UnknownError

谢谢你的时间.

hfr*_*ile 6

从未使用Fiddler2,但在开发Windows Phone应用程序时遇到了同样的问题.

对我来说,原因是完全不同的:WMAppManifest.xml只是缺少ID_CAP_NETWORKING!

由于我得到了"未找到"异常而不是"不支持的异常",我几乎尝试了其他所有内容,直到找到问题的真正原因... ;-)

我更喜欢禁用所有CAPS,只启用应用程序真正需要的那些,因为如果应用程序需要访问"所有内容",用户将无法理解/接受;-)


Pro*_*m.X 1

好吧,我已经解决了...但不知道如何解决。我的机器没有重新启动,我的代码没有改变。唯一可能的解释是我的模拟器确实崩溃了几次。也许里面有什么东西。

感谢您抽出时间,这是我正在使用的代码,它与 Huddle 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
                );
Run Code Online (Sandbox Code Playgroud)