API以null形式传入

问题描述 投票:1回答:1

我有一个已知的工作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;
    }

更新:现在我有一个新问题,它一直死锁。有什么办法可以在不使用异步的情况下得到返回结果?

c# api
1个回答
2
投票

我得到了它的工作,感谢大家的帮助和建议。

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;
        }

    }
© www.soinside.com 2019 - 2024. All rights reserved.