C# API以null形式传入
我有一个已知的工作API。当我使用下面的代码调用它时,它作为空值传入 代码: 我对api的调用有问题吗?下面是课堂:C# API以null形式传入,c#,api,C#,Api,我有一个已知的工作API。当我使用下面的代码调用它时,它作为空值传入 代码: 我对api的调用有问题吗?下面是课堂: [System.Serializable] public class WBG_Serial_Key { public string Email { get; set; } public string Product { get; set; } public string Serial_Key { get; set; } } 我做错什么了吗?有人有什么建议
[System.Serializable]
public class WBG_Serial_Key
{
public string Email { get; set; }
public string Product { get; set; }
public string Serial_Key { get; set; }
}
我做错什么了吗?有人有什么建议吗
更新:
我按照建议调整了代码,但仍然不起作用:
public bool Serial_Key_Exist(string serial)
{
bool rsp = false;
WBG_Serial_Key Serial_Key = new WBG_Serial_Key();
Serial_Key.Email = "";
Serial_Key.Product = _Product;
Serial_Key.Serial_Key = serial;
using (var client = new HttpClient())
{
client.BaseAddress = new Uri(_EndPoint);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = client.PostAsJsonAsync("api/WhiteBoXGaming/Post_SerialKeyExist", rsp).Result;
if(response.IsSuccessStatusCode)
{
return response.Content.ReadAsAsync<bool>().Result;
}
//default failed - Prevent duplicate keys
return true;
}
}
更新:
现在我有一个新的问题,它一直死锁现在。是否仍要在不使用async的情况下获取返回结果 我成功了,谢谢大家的帮助和建议
public bool Serial_Key_Exist(string serial)
{
bool rsp = false;
WBG_Serial_Key Serial_Key = new WBG_Serial_Key();
Serial_Key.Email = "";
Serial_Key.Product = _Product;
Serial_Key.Serial_Key = serial;
using (var client = new HttpClient())
{
client.BaseAddress = new Uri(_EndPoint);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = client.PostAsJsonAsync("api/WhiteBoXGaming/Post_SerialKeyExist", Serial_Key).Result;
if(response.IsSuccessStatusCode)
{
return response.Content.ReadAsAsync<bool>().Result;
}
//default failed - Prevent duplicate keys
return true;
}
}
public bool Serial\u Key\u存在(字符串序列)
{
bool-rsp=false;
WBG_串行_键串行_键=新的WBG_串行_键();
Serial_Key.Email=“”;
Serial_Key.Product=_Product;
串行按键。串行按键=串行;
使用(var client=new HttpClient())
{
client.BaseAddress=新Uri(_端点);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(新的MediaTypeWithQualityHeaderValue(“应用程序/json”);
HttpResponseMessage response=client.postsJSONASync(“api/WhiteBoXGaming/Post_SerialKeyExist”,Serial_Key”)。结果;
if(响应。IsSuccessStatusCode)
{
返回response.Content.ReadAsAsync().Result;
}
//默认失败-防止重复密钥
返回true;
}
}
也许您的API代码是错误的?我看到很多人试图用类似ApiMethod(string myJsonBody)
的东西来接受JSON服务器端,当然,这不起作用,然后他们想知道为什么会得到null
,使用HttpClient
而不是headwell发布一个示例代码,如果您认为您的想法可行,那么它不是服务器端问题?有趣。我推荐阅读和后续活动。本文将介绍为什么您不应该像现在这样将HttpClient
与一起使用使用
,Microsoft打算如何使其在整个应用程序中保持静态,以及如何……这会导致DNS在较长生命周期的应用程序中无法保持最新。微软已经为它创建了一个解决方案,这将在后续文章中介绍。
[Route("api/WhiteBoXGaming/Post_SerialKeyExist")]
[HttpPost]
public bool SerialKeyExist([FromBody]WBG_Serial_Key Key)
{
bool Exist = false;
Exist = _DataHelper.Serial_Key_Exist(Key.Serial_Key, Key.Product);
return Exist;
}
public bool Serial_Key_Exist(string serial)
{
bool rsp = false;
WBG_Serial_Key Serial_Key = new WBG_Serial_Key();
Serial_Key.Email = "";
Serial_Key.Product = _Product;
Serial_Key.Serial_Key = serial;
using (var client = new HttpClient())
{
client.BaseAddress = new Uri(_EndPoint);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = client.PostAsJsonAsync("api/WhiteBoXGaming/Post_SerialKeyExist", Serial_Key).Result;
if(response.IsSuccessStatusCode)
{
return response.Content.ReadAsAsync<bool>().Result;
}
//default failed - Prevent duplicate keys
return true;
}
}