首页 > 解决方案 > Xamarin 形成 Http Web 请求

问题描述

我正在开发一个 Xamarin.Forms 项目,在该项目中我必须从 Json URL 获取数据,我正在使用以下代码:

 string URL = "https://example.com/.json";
   var httprequest = (HttpWebRequest)WebRequest.Create(URL);
   var response = (HttpWebResponse)httprequest.GetResponse();
   var stream = new StreamReader(response.GetResponseStream()).ReadToEnd();
   var firebasevariable = JObject.Parse(stream);
   string dist = firebasevariable["distance"].ToObject<string>();

但“dist”值不断返回 NULL !我导入了 System.Net.Http 和 Newtonsoft.Json 库我也收到了这个警告,但我不知道是不是因为我得到了 NULL ,我使用邮递员尝试了我的链接,它完美地返回了数据

“mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”和“mscorlib, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e”之间存在冲突

标签: restxamarin.formsgethttpwebrequest

解决方案


我也在使用 Firebase,这是有效的:

async Task<string> Get(string url)
{
    using(var requestMessage = new HttpRequestMessage(HttpMethod.Get, url))
    {
        // Client is a static HttpClient property. 
        // It's recommended to use a single instance in all your requests, but create it in this method if you want.
        var response = await Client.SendAsync(requestMessage);

        var contentString = await response.Content.ReadAsStringAsync();

        if (response.IsSuccessStatusCode)
            return contentString;
        else
            throw new Exception(contentString);
    }
}

这个方法当然会返回一个 JSON 字符串。得到它之后,你可以将它反序列化为你想要的任何东西。

如果抛出异常,则可能意味着身份验证问题(只需阅读说明contentString)。如果它返回正确但值为空,那么可能您使用的 URL 与 Postman 测试不同,并且数据库上的路径值确实为空。

希望能帮助到你!


推荐阅读