忙于处理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
方法?
答案 0 :(得分:3)
Windows Phone 7(以及一般的Silverlight)不支持同步IO。如果查看Silverlight API documentation,您会发现编译器完全正确 - 不是 GetResponse
方法。您需要使用异步BeginGetResponse
方法。
或者,使用WebClient
使异步部分更简单 - 当然,C#5的异步支持通常会使异步变得更容易。
编辑:如评论中所述 - DownloadString
仍然是同步的,因此不支持Silverlight。您需要异步API,例如DownloadStringAsync
。