我有一个已知的工作API。当我用下面的代码调用它时,它传入的是NULL值。
代码。
public bool Serial_Key_Exist(WBG_Serial_Key Serial_Key)
{
bool exists = false;
string verification = string.Empty;
string uri = _EndPoint + "api/WhiteBoXGaming/Post_SerialKeyExist";
var ujson = JsonConvert.SerializeObject(Serial_Key);
var request = WebRequest.Create(uri);
request.Method = "POST";
request.ContentType = "application/json";
request.ContentLength = ujson.Length;
using (StreamWriter writer = new StreamWriter(request.GetRequestStream()))
{
writer.Write(ujson);
}
using (StreamReader reader = new StreamReader(request.GetResponse().GetResponseStream()))
{
verification = reader.ReadToEnd();
}
if (verification == "true") { exists = true; }
return exists;
}
Something wrong with my call to my 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; }
}
我是不是做错了什么?有人有什么建议吗?
更新:我按照建议调整了代码,还是不行。
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;
}
}
这是api的代码。
[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;
}
}