HttpWebRequest GetResponse没有这样的方法

时间:2012-06-20 08:25:58

标签: c# windows-phone-7 servlets

忙于处理Visual Studio 2010 Express for Windows phone,并希望调用一个从我的某个类返回json的servlet。

到目前为止,我有以下方法:

public Login(string userName, string password){

   string servletUrl = "http://172.12.5.35:8080/SomeService/login?u="+userName+"&p="+password;
   HttpWebRequest request = (HttpWebRequest)WebRequest.Create(servletUrl);
   HttpWebResponse response = (HttpWebResponse)request.GetResponse();

}

但由于某种原因,我通过“GetResponse()”方法调用得到错误,说没有这样的方法?有人有什么想法吗?我看了很多,我的代码对我来说是正确的吗?

被修改---------------------------

public Login(string userName, string password){

   string servletUrl = "http://172.12.5.35:8080/SomeService/login?u="+userName+"&p="+password;
   using(var client = (IDisposable)new WebClient(servletUrl))
   {
        string result = client.DownloadString(servletUrl);

   {

}

但似乎WebClient没有DownloadString方法?

1 个答案:

答案 0 :(得分:3)

Windows Phone 7(以及一般的Silverlight)不支持同步IO。如果查看Silverlight API documentation,您会发现编译器完全正确 - 不是 GetResponse方法。您需要使用异步BeginGetResponse方法。

或者,使用WebClient使异步部分更简单 - 当然,C#5的异步支持通常会使异步变得更容易。

编辑:如评论中所述 - DownloadString仍然是同步的,因此不支持Silverlight。您需要异步API,例如DownloadStringAsync