我正在使用silverlight开发一个Windows小工具,我需要调用一个asp.net Web服务,它返回一个带有一些数据的对象。 我想收到该对象并显示数据。
我的代码在
之下网络服务代码。
[WebMethod]
public userdata LogIn(string username,string user_password)
{
return udata;
}
return new userdata();
}
}
我的自定义类代码是
public class userdata
{
string name;
public string Name
{
get { return name; }
set { name = value; }
}
string userName;
public string UserName
{
get { return userName; }
set { userName = value; }
}
string department;
public string Department
{
get { return department; }
set { department = value; }
}
string designation;
public string Designation
{
get { return designation; }
set { designation = value; }
}
string email;
public string Email
{
get { return email; }
set { email = value; }
}
string mobile;
public string Mobile
{
get { return mobile; }
set { mobile = value; }
}
string ip;
public string Ip
{
get { return ip; }
set { ip = value; }
}
string id;
public string Id
{
get { return id; }
set { id = value; }
}
}
它返回
<userdata>
<Name>Asik</Name>
<UserName>asikcse</UserName
><Department>technical</Department>
<Designation>Software Programmer</Designation>
<Id>1</Id>
</userdata>
在我的项目结束时,我添加了Web引用作为引用,但没有任何解决方案。
LoginServiceSoapClient login = new LoginServiceSoapClient();
login.LogInCompleted+=new EventHandler<LogInCompletedEventArgs>(login_LogInCompleted);
login.LogInAsync(log._nameText, log._surnameText);
}
void login_LogInCompleted(object sender, LogInCompletedEventArgs e)
{
How can I retrieve this object returned by webmethod
}
答案 0 :(得分:0)
因此,您需要在silverlight应用程序中创建一个类来保存数据,我建议只复制userdata类。然后,您需要向该端点发出请求以获取数据。这可以使用WebClient类完成。然后使用DataContractSerializer将xml转换为对象。这是一个例子:
WebClient webClient = new WebClient();
var data = webClient.DownloadString("<your endpoint>"); //You can do this async too
var serializer = new DataContractSerializer(typeof(UserData));
Byte[] bytes = Encoding.Unicode.GetBytes(data);
UserData userData;
using (MemoryStream stream = new MemoryStream(bytes))
{
userData = serializer.ReadObject(stream) as UserData;
}
有一些更聪明的方法可以做到这一点。