C# 如何在Xamarin Forms PCL应用程序中接受HttpClient的ASP.NET web API控制器文件
我在asp.net中有一个webapi我有一个本地主机地址,如C# 如何在Xamarin Forms PCL应用程序中接受HttpClient的ASP.NET web API控制器文件,c#,http,asp.net-web-api,xamarin.forms,C#,Http,Asp.net Web Api,Xamarin.forms,我在asp.net中有一个webapi我有一个本地主机地址,如http://localhost:50908/api/Schools/这将以XML文件的形式提供输出,如下所示: <ArrayOfSchool xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/MasterDetail.Models"> <School> &l
http://localhost:50908/api/Schools/
这将以XML文件的形式提供输出,如下所示:
<ArrayOfSchool xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/MasterDetail.Models">
<School>
<SchoolCode>TDSB001</SchoolCode>
<SchoolId>1</SchoolId>
<SchoolName>Claude Watson School for Arts</SchoolName>
</School>
<School>
<SchoolCode>TDSB002</SchoolCode>
<SchoolId>2</SchoolId>
<SchoolName>Harvest Community School of Arts.</SchoolName>
</School>
<School>
<SchoolCode>TDSB003</SchoolCode>
<SchoolId>3</SchoolId>
<SchoolName>Yogin Bhatt Arts School.</SchoolName>
</School>
</ArrayOfSchool>
TDSB001
1.
克劳德·沃森艺术学校
TDSB002
2.
收获社区艺术学校。
TDSB003
3.
约金·巴特艺术学校。
我的客户代码:
public async Task<List<School>> GetAsync()
{
var httpClient = new HttpClient();
HttpResponseMessage responseGet = await httpClient.GetAsync("http://10.115.160.142/sampleSchools.xml");
string response = await responseGet.Content.ReadAsStringAsync();//Getting response
response.Replace(((char)0xFEFF).ToString(), "");
XDocument doc = XDocument.Load("http://10.115.160.142/sampleSchools.xml");
List<School> SchoolDetailsList = new List<School>();
// await DisplayAlert("XmlParsing", doc.ToString, "Ok");
foreach (var item in doc.Descendants("School"))
{
School schoolItem = new School();
schoolItem.SchoolCode = item.Element("SchoolCode").Value.ToString();
schoolItem.SchoolId = item.Element("SchoolId").Value.ToString();
schoolItem.SchoolName = item.Element("SchoolName").Value.ToString();
SchoolDetailsList.Add(schoolItem);
}
//Binding listview with server response
var ResList = SchoolDetailsList;
return ResList;
}
公共异步任务GetAsync()
{
var httpClient=新的httpClient();
HttpResponseMessageResponseGet=等待httpClient.GetAsync(“http://10.115.160.142/sampleSchools.xml");
string response=wait responseGet.Content.ReadAsStringAsync();//获取响应
Replace(((char)0xFEFF.ToString(),“”);
XDocument doc=XDocument.Load(“http://10.115.160.142/sampleSchools.xml");
List SchoolDetailsList=新列表();
//等待DisplayAlert(“XmlParsing”,doc.ToString,“Ok”);
foreach(文件子体(“学校”)中的变量项)
{
学校项目=新学校();
schoolItem.SchoolCode=item.Element(“SchoolCode”).Value.ToString();
schoolItem.SchoolId=item.Element(“SchoolId”).Value.ToString();
schoolItem.SchoolName=item.Element(“SchoolName”).Value.ToString();
学校详情列表。添加(学校项目);
}
//将listview与服务器响应绑定
var ResList=SchoolDetailsList;
返回列表;
}
我上面给出的示例不适用于我的URI,因此我制作了xml文件的副本并将其放在xampp服务器上。这样做是可行的,但这不是正确的方法。如何执行此操作?您始终可以尝试将其更改为iis服务器,而不是iisexpress以运行此类代码。对于此问题,“不工作”不是一个有用的描述。具体发生了什么?您得到了哪些错误或异常?您确定是哪一行导致了这个问题吗?先生,我真的很抱歉,所以我在http客户端收到响应时添加了断点。因此,当我使用这个URI“”时,它会给我一个空值,但是,当你将我正在使用的xml文件通过xampp服务器放入列表时,它会给我一个完美的输出,使用您服务器的IP或FQDN您能告诉我如何使用我的IP地址而不是本地地址访问它吗?如果我的IP地址看起来像132.168.14.12中的“this”,只需将主机名替换为IP即可。您还应该确保您使用的任何本地服务器都允许远程请求,并且您的防火墙没有阻止任何东西