C# 如何将数据从REST Web服务发送到Xamarin应用程序?
我的程序需要帮助。我声明我还是一个初学者,如果这个问题很琐碎,我很抱歉 问题:我使用SqlConnection完成了REST Web服务的开发。我现在的问题是将xamarin表单应用程序中的数据(当前为静态)动态化 下面是我静态声明数据的代码的一部分:C# 如何将数据从REST Web服务发送到Xamarin应用程序?,c#,api,web-services,xamarin,webservice-client,C#,Api,Web Services,Xamarin,Webservice Client,我的程序需要帮助。我声明我还是一个初学者,如果这个问题很琐碎,我很抱歉 问题:我使用SqlConnection完成了REST Web服务的开发。我现在的问题是将xamarin表单应用程序中的数据(当前为静态)动态化 下面是我静态声明数据的代码的一部分: public class MockDataStore: IDataStore <Item> { List <Item> items; // Allow me to assign v
public class MockDataStore: IDataStore <Item>
{
List <Item> items;
// Allow me to assign values to the declared variables
public MockDataStore ()
{
items = new List <Item> ();
var mockItems = new List <Item>
{
new Item {Id = Guid.NewGuid (). ToString (), Nome_cognome = "1xxx1", Email = "xxx", Phone = 3333333333, Role = "Programmer", ActivityMattina = "Is updating the databases", ActivitiesAfternoon = "Presentation ", Number_Inside = 123},
new Item {Id = Guid.NewGuid (). ToString (), Nome_cognome = "2xx2", Email = "xxx", Phone = 3333333333, Role = "Programmer", ActivityMattina = "Is updating the databases", ActivitiesAfternoon = "Presentation ", Number_Inside = 123},
new Item {Id = Guid.NewGuid (). ToString (), Nome_cognome = "3xxx3", Email = "3xxx3", Phone = 3333333333, Role = "Programmer", ActivityMattina = "Is updating the databases", ActivitiesAfternoon = "Presentation ", Number_Inside = 123},
};
foreach (var item in mockItems)
{
Items.Add (item);
}
}
公共类MockDataStore:IDataStore
{
清单项目;
//允许我赋值到声明的变量
公共数据存储()
{
项目=新列表();
var mockItems=新列表
{
新项目{Id=Guid.NewGuid().ToString(),Nome_cognome=“1xxxx1”,Email=“xxx”,Phone=3333,Role=“Programmer”,ActivityMattina=“正在更新数据库”,activities午后=“Presentation”,Number_Inside=123},
新项目{Id=Guid.NewGuid().ToString(),Nome_cognome=“2xx2”,Email=“xxx”,Phone=3333,Role=“Programmer”,ActivityMattina=“正在更新数据库”,activities午后=“Presentation”,Number\u Inside=123},
新项目{Id=Guid.NewGuid().ToString(),Nome_cognome=“3xx3”,Email=“3xx3”,Phone=3333,Role=“Programmer”,ActivityMattina=“正在更新数据库”,activities午后=“Presentation”,Number\u Inside=123},
};
foreach(mockItems中的var项)
{
Items.Add(item);
}
}
这里是我在Web服务上运行的查询:
公共列表室()
{
列表=新列表();
string queryString=“从[dbo].[ANSIS00F]选择CDSISM、DESISM、类型、GSM、电子邮件、IP,其中CDSISM='44'和ANSIS00F.TIPO='X';”;
//string queryString=“选择CDSISM、设计、类型、GSM、电子邮件、IP、AGSIS、AGMAT、AGPOM、AGDAT、来自[dbo]。[CDSISM]=[AGSIS]上的[ANSIS00F]内部连接[dbo]。[AGENDA]其中ANSIS00F.TIPO='X'由设计ASC、AGDAT ASC订购;”;
SqlCommand=newsqlcommand(queryString,connection);
SqlDataAdapter=新SqlDataAdapter(命令);
DataTable=新的DataTable();
connection.Open();
适配器。填充(表格);
connection.Close();
foreach(table.Rows中的数据行dr)
{
list.Add(新的Ansagenda
{
CDSISM=Convert.ToString(dr[“CDSISM”]),
DESISM=Convert.ToString(dr[“DESISM”]),
TYPE=Convert.ToString(dr[“TYPE”]),
GSM=Convert.ToString(dr[“GSM”]),
EMAIL=Convert.ToString(dr[“EMAIL”]),
IP=Convert.ToString(dr[“IP”]),
});
}
退货清单;
}
如果你想在应用程序中显示来自服务器的数据,你需要以某种方式获取它们。你可以通过向服务器发出HTTP请求来实现这一点。让我们从一个问题开始:你可以向服务器索要议程列表吗?你可以通过浏览器/邮递员来完成吗
我强烈建议你应该在你的应用程序中阅读并尝试做一些类似的事情。这并不难做到,使用Refit有很多优点
当然,你可以自己提出请求,但我不确定当有很多库可以这样做时,这是否有意义。如果你想在应用程序中显示来自服务器的数据,你需要以某种方式获取它们。你可以通过向服务器发出HTTP请求来实现。让我们从一个问题开始:你能问你的服务器吗查看议程列表?您可以通过浏览器/邮递员完成吗 我强烈建议你应该在你的应用程序中阅读并尝试做一些类似的事情。这并不难做到,使用Refit有很多优点
当然,您可以自己提出请求,但我不确定当有许多库能够这样做时,这是否有意义。您的Xamarin应用程序需要在正确的URL向Web服务发出HTTP请求,然后接收服务器发回的数据。您做到了吗?您所说的“动态”是什么意思准确地说?您是否在询问如何将参数传递给Web服务,以便它可以改变响应(例如,按特定字段或其他内容过滤数据)?有点不清楚流程的哪一部分会给您带来问题。动态意味着:我想使用web服务上的数据,并在applicationOk中查看这些数据。然后,您只需获取Xamarin代码,以正确的URL向API服务器发出HTTP请求,然后接收响应,将其从JSON解码为合适的C#类结构,然后您可以使用该数据填充您的用户界面视图。非常确定您可以非常轻松地在线研究如何完成这些任务-这是一个非常常见的场景。可能您可以找到完整演示此过程的端到端教程。然后您可以根据特定的数据集对其进行调整。有到目前为止,您做过任何研究吗?您的Xamarin应用程序需要在正确的URL向Web服务发出HTTP请求,然后接收服务器发回的数据。您做过了吗?您做了什么
public List <Agenda> Rooms ()
{
List <Ansagenda> list = new List <Ansagenda> ();
string queryString = "SELECT CDSISM, DESISM, TYPE, GSM, EMAIL, IP FROM [dbo]. [ANSIS00F] WHERE CDSISM = '44 'AND ANSIS00F.TIPO =' X ';";
// string queryString = "SELECT CDSISM, DESISM, TYPE, GSM, EMAIL, IP, AGSIS, AGMAT, AGPOM, AGDAT, ORDER FROM [dbo]. [ANSIS00F] INNER JOIN [dbo]. [AGENDA] ON [CDSISM] = [AGSIS] WHERE ANSIS00F.TIPO = 'X' ORDER BY DESISM ASC, AGDAT ASC; ";
SqlCommand command = new SqlCommand (queryString, connection);
SqlDataAdapter adapter = new SqlDataAdapter (command);
DataTable table = new DataTable ();
connection.Open ();
adapter.Fill (table);
connection.Close ();
foreach (DataRow dr in table.Rows)
{
list.Add (new Ansagenda
{
CDSISM = Convert.ToString (dr ["CDSISM"]),
DESISM = Convert.ToString (dr ["DESISM"]),
TYPE = Convert.ToString (dr ["TYPE"]),
GSM = Convert.ToString (dr ["GSM"]),
EMAIL = Convert.ToString (dr ["EMAIL"]),
IP = Convert.ToString (dr ["IP"]),
});
}
return list;
}