C# 如何在xamarin表单中使用refit显示listview
我尝试用来自web服务的json数据以xamarin形式显示listview 这是我的数据:C# 如何在xamarin表单中使用refit显示listview,c#,web-services,xamarin,refit,C#,Web Services,Xamarin,Refit,我尝试用来自web服务的json数据以xamarin形式显示listview 这是我的数据: {"isSuccess":true,"resultMessage":"","data":[{"password":"MnwPzyBdAZBrDV6xMHoIzg","userid":4,"name":"Budi","tanggal_lahir":"09/03/1996 00:00:00","email":"budi123@gmail.com","tanggal_join":"01/20/2020 15:
{"isSuccess":true,"resultMessage":"","data":[{"password":"MnwPzyBdAZBrDV6xMHoIzg","userid":4,"name":"Budi","tanggal_lahir":"09/03/1996 00:00:00","email":"budi123@gmail.com","tanggal_join":"01/20/2020 15:08:07","username":"budi001"},
{"password":"PFjQJkorLvR+ilWUWdq1Yw","userid":5,"name":"Hermawan","tanggal_lahir":"09/07/1996 00:00:00","email":"mawan@gmail.com","tanggal_join":"01/23/2020 15:08:07","username":"mawan123"}]}
这是我的编码web服务:
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public void getAllUsers()
{
DbAccessConnection conn = getActiveConnection();
if (conn == null)
return;
try
{
beginTransaction(conn);
MimoUser users = new MimoUser(conn);
DataSet ds = new DataSet();
string tbName = "MimoUser";
users.getAll(ds, tbName);
DataTable dtTbl = ds.Tables[tbName];
List<Dictionary<String, object>> lsOfDtTbl = Tools.convertDataTableToList(dtTbl);
commitTransaction(conn);
Responder.writeResponse(true, "", lsOfDtTbl );
//commitTransaction(conn);
}
catch (Exception ex)
{
rollbackTransaction(conn);
Responder.writeResponse(false, ex.Message);
}
}
DataReturnResult.cs
public class DataReturnResult
{
public Boolean isSuccess;
public String resultMessage;
public object data;
public static DataReturnResult createReturnResult(Boolean isSuccess,String resultMessage,object data = null)
{
DataReturnResult result = new DataReturnResult();
result.isSuccess = isSuccess;
result.resultMessage = resultMessage;
result.data = data;
return result;
}
public static String createReturnResultJson(Boolean isSuccess,String resultMessage,object data = null)
{
DataReturnResult result = createReturnResult(isSuccess, resultMessage, data);
return JsonConvert.SerializeObject(result);
}
}
MainPage.xaml
<ContentPage.Content>
<StackLayout
Padding="20">
<Button
Text="Get User"
Clicked="OnUserClicked"
BackgroundColor="Black"
TextColor="White"
HorizontalOptions="FillAndExpand"/>
<ListView
x:Name="ListUser">
<ListView.ItemTemplate>
<DataTemplate>
<TextCell
Text="{Binding name}"/>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackLayout>
</ContentPage.Content>
我尝试使用任务getAllUsers()
更改代码IUserApi.cs,从Get User收到相同的错误消息
您能帮助我如何修复它吗?您能在设备的web浏览器中打开该URL并得到200而不是500的回复吗?是的,我可以从手机上打开我的URL,但当我单击method getAllUsers时,会显示消息“测试表单仅适用于本地机器的请求”当我从笔记本电脑上打开我的url并单击方法getAllUsers(我得到了我的数据)时,情况就不同了。您需要配置web服务器以允许来自远程客户端的请求
public class DataReturnResult
{
public Boolean isSuccess;
public String resultMessage;
public object data;
public static DataReturnResult createReturnResult(Boolean isSuccess,String resultMessage,object data = null)
{
DataReturnResult result = new DataReturnResult();
result.isSuccess = isSuccess;
result.resultMessage = resultMessage;
result.data = data;
return result;
}
public static String createReturnResultJson(Boolean isSuccess,String resultMessage,object data = null)
{
DataReturnResult result = createReturnResult(isSuccess, resultMessage, data);
return JsonConvert.SerializeObject(result);
}
}
<ContentPage.Content>
<StackLayout
Padding="20">
<Button
Text="Get User"
Clicked="OnUserClicked"
BackgroundColor="Black"
TextColor="White"
HorizontalOptions="FillAndExpand"/>
<ListView
x:Name="ListUser">
<ListView.ItemTemplate>
<DataTemplate>
<TextCell
Text="{Binding name}"/>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackLayout>
</ContentPage.Content>
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
}
async void OnUserClicked(object sender,EventArgs ex)
{
var apiResponse = RestService.For<IUserApi>("http://192.168.0.188/appwebservice/appwebservice.asmx");
var listUser = await apiResponse.getAllUsers();
ListUser.ItemsSource = listUser;
}
}
Refit.ApiException: 'Response status code does not indicate success: 500 (Internal Server Error).'