先说一下问题,由于之前公共方法用的都不是异步方法,所以没办法将方法改为async方法
也就导致 postansy方法无法使用 因为一旦用了返回就变为Task<>
List<RealtimeData> realtimeDatas = new List<RealtimeData>();
string source = "";
//先将两条数据更新到数据库中
foreach (var item in server.Points)
{
source += "/" + item.Source + ",";
}
///请求对方接口
var res = "";
HttpClient _httpClient = new HttpClient();
var postContent = new MultipartFormDataContent();
var requestUri = server.HostName;
var values = new[]
{
new KeyValuePair<string, string>("id","1"),
};
foreach (var keyValuePair in values)
{
postContent.Add(new StringContent(keyValuePair.Value),
String.Format("\"{0}\"", keyValuePair.Key));
}
var response = Getcon(requestUri, postContent);
//处理返回JSON数据
var q = JsonConvert.DeserializeObject<List<XNYQM>>(response);
}
注意 关键是Getcon方法如何返回不是Task格式
public static string Getcon(string requestUri, MultipartFormDataContent postContent)
{
HttpClient _httpClient = new HttpClient();
var response = _httpClient.PostAsync(requestUri, postContent);
response.Wait();
var t2 = response.Result.Content.ReadAsByteArrayAsync();
string str = System.Text.Encoding.UTF8.GetString(t2.Result);
return str;
}
这里将接口返回的值进行byte转码就可以返回正常的string 然后在进行处理就可以了