我嘗試從我的 API 點接收資料,但每次收到訊息時:
result Id = 1, Status = WaitingForActivation, Method = {null}
這是我的 ResService_HQ_AHS 課程:
using System;
using System.Diagnostics;
using System.Net.Http;
using System.Threading.Tasks;
using HydroMeteoAnalyzer.Models.API;
using Newtonsoft.Json;
namespace HydroMeteoAnalyzer.Services
{
public class RestService_HQ_AHS
{
HttpClient _client;
public RestService_HQ_AHS()
{
_client = new HttpClient();
}
public async Task<HQ_AHS> Get_HQ_AHS(string query)
{
HQ_AHS HQ_Data = new HQ_AHS();
try
{
var response = await _client.GetAsync(query);
if (response.IsSuccessStatusCode)
{
var content = await response.Content.ReadAsStringAsync();
HQ_Data = JsonConvert.DeserializeObject<HQ_AHS>(content);
}
}
catch (Exception ex)
{
Debug.WriteLine("\t\tERROR {0}", ex.Message);
}
return HQ_Data;
}
}
}
這是來自json的物件:
using System;
namespace HydroMeteoAnalyzer.Models.API
{
public class HQ_AHS
{
public int Station { get; set; }
public string Ime { get; set; }
}
}
這是我的帶有 API EndPoint 的常量類:
using System;
namespace HydroMeteoAnalyzer.Models.API
{
public class Constants
{
public static string EndPoint = "http://194.141.118.43/api/stations";
}
}
這是我嘗試從 Json 檔案接收資料的頁面:
using System;
using System.Collections.Generic;
using HydroMeteoAnalyzer.Models.API;
using HydroMeteoAnalyzer.Services;
using Xamarin.Forms;
namespace HydroMeteoAnalyzer.Models.Hydro
{
public partial class HQ_AHS : ContentPage
{
RestService_HQ_AHS _restServiceStations;
public HQ_AHS ()
{
InitializeComponent ();
_restServiceStations = new RestService_HQ_AHS();
CheckStation_HQ_AHS();
}
string GenerateRequestUriStations(string endpoint)
{
string requestUri = endpoint;
requestUri = $"stations";
return requestUri;
}
public void CheckStation_HQ_AHS()
{
var result = _restServiceStations.Get_HQ_AHS(Constants.EndPoint);
var test = result;
}
}
}
每次我收到 nulltest并收到訊息時:result Id = 1, Status = WaitingForActivation, Method = {null} 并且RestService_HQ_AHS無法在 If 陳述句中輸入..
這是 API 點:http: //194.141.118.43/api/stations
我需要更改哪些內容才能從 API 獲取資料?
uj5u.com熱心網友回復:
問題是您沒有等待來自Get_HQ_AHS. 這需要在CheckStation_HQ_AHS方法中等待。也將簽名更新為async Task(async void通常應避免):
public async Task CheckStation_HQ_AHS()
{
var result = await _restServiceStations.Get_HQ_AHS(Constants.EndPoint);
...
}
此外,json 回應是型別的串列/陣列List<HQ_AHS>,因此您應該嘗試使用以下方法進行反序列化:
var content = await response.Content.ReadAsStringAsync();
var responseModel = JsonConvert.DeserializeObject<List<HQ_AHS>>(content);
// deserialize to list here ^^^
您尚未顯示HQ_Data,因此不確定回應如何映射到該類,但您應該能夠使用上面的代碼進行反序列化。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/424300.html
上一篇:Xamarin串列視圖更改顏色
