Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在Xamarin Forms PCL应用程序中接受HttpClient的ASP.NET web API控制器文件_C#_Http_Asp.net Web Api_Xamarin.forms - Fatal编程技术网

C# 如何在Xamarin Forms PCL应用程序中接受HttpClient的ASP.NET web API控制器文件

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

我在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>
<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即可。您还应该确保您使用的任何本地服务器都允许远程请求,并且您的防火墙没有阻止任何东西