Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.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
Xamarin表单从webservices/restapi检索json时出现问题_Rest_Xamarin_Httpclient_Webrequest - Fatal编程技术网

Xamarin表单从webservices/restapi检索json时出现问题

Xamarin表单从webservices/restapi检索json时出现问题,rest,xamarin,httpclient,webrequest,Rest,Xamarin,Httpclient,Webrequest,使用Xamarin表单中的PLC项目从Web服务检索数据时遇到问题。 我尝试过WebRequest和HttpClient,但遇到了各种异常。我也试过了 要运行此示例中的代码,请执行以下操作: 连接失败(无法访问网络) ConnectFailure(请求的地址在此上下文中无效) 我还尝试运行此示例中的代码: 尝试发出请求时引发namesresolutionfail异常 var client = new System.Net.Http.HttpClient ();

使用Xamarin表单中的PLC项目从Web服务检索数据时遇到问题。 我尝试过WebRequest和HttpClient,但遇到了各种异常。我也试过了 要运行此示例中的代码,请执行以下操作:

  • 连接失败(无法访问网络)

  • ConnectFailure(请求的地址在此上下文中无效)

  • 我还尝试运行此示例中的代码: 尝试发出请求时引发namesresolutionfail异常

    var client = new System.Net.Http.HttpClient ();
                    client.BaseAddress = new Uri("http://api.geonames.org/");
                    var response = await client.GetAsync("earthquakesJSON?north=44.1&south=-9.9&east=-22.4&west=55.2&username=bertt");
                    var earthquakesJson = response.Content.ReadAsStringAsync().Result;
                    var rootobject = JsonConvert.DeserializeObject<Rootobject>(earthquakesJson);
                    return rootobject.earthquakes;
    
    var client=new System.Net.Http.HttpClient();
    client.BaseAddress=新Uri(“http://api.geonames.org/");
    var response=await client.GetAsync(“earthquakesJSON?北=44.1,南=9.9,东=22.4,西=55.2,用户名=bertt”);
    var earthquakesJson=response.Content.ReadAsStringAsync().Result;
    var rootobject=JsonConvert.DeserializeObject(earthquakesJson);
    返回根对象。地震;
    

    我已经测试了我的RESTAPI(用Node.Js编写),它正在按预期返回数据。

    Eee,Android的localhost是什么?它不知道localhost实际上是您的计算机。根据api.geonames.org,这可能是一个模拟器问题。你在哪里测试你的应用程序?试试真正的设备。

    您是在用iOS还是Android进行测试?如果是Android,您的应用程序是否启用了Internet权限?是的,我的清单文件中有以下条目:在我的手机上安装api.geonames.org时,它可以工作,因此可能与emulator相关。我会查出来的谢谢。愚蠢的错误!我在主机文件中创建了一个条目来间接映射本地主机地址。我现在得到了命名解析错误,但正如您所提到的,可能与模拟器有关。
                var client = new System.Net.Http.HttpClient ();
                client.BaseAddress = new Uri("http://localhost:3000/");
                client.DefaultRequestHeaders.Clear ();
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                var response = await client.GetStringAsync ("profile/contacts");
    
    var client = new System.Net.Http.HttpClient ();
                    client.BaseAddress = new Uri("http://api.geonames.org/");
                    var response = await client.GetAsync("earthquakesJSON?north=44.1&south=-9.9&east=-22.4&west=55.2&username=bertt");
                    var earthquakesJson = response.Content.ReadAsStringAsync().Result;
                    var rootobject = JsonConvert.DeserializeObject<Rootobject>(earthquakesJson);
                    return rootobject.earthquakes;