循环调用Rest API

问题描述

让我们假设我通过调用本地网站的API获得了游戏订单。 (一个出售游戏代码的本地网站,当用户在该网站上进行购买时,我正在从该网站的API获取订单。)我将使用.net核心控制台应用程序执行此操作,该应用程序将每隔一次检查该网站的API 10分钟。现在假设我从网站的API获得了5个游戏订单。在此.net核心控制台应用程序内部,我将调用我的API,以完成对这5个游戏订单的购买,如下所示。 (我正在调用第三方Rest API以获取游戏代码。)

能否请您检查我的代码并给我一些反馈\建议?有什么地方可以引起问题吗?

static async Task Main(string[] args)
        {
          // Assume I am getting game orders from the web site here
          //
            .....

            const int numberOfProducts = webSiteGameOrders;
            try
            {
                for (var i = 0; i < numberOfProducts; i++)
                {
                    var product = webSiteProduct;
                   
                    //DEV
                    var request =
                        (HttpWebRequest)WebRequest.Create("http://test//api/purchase");

                    var svcCredentials =
                        Convert.ToBase64String(
                            Encoding.ASCII.GetBytes("username" + ":" + "password"));

                    request.Headers.Add("Authorization","Basic " + svcCredentials);
                    request.Method = "POST";
                    request.KeepAlive = false;
                    request.ContentType = "application/x-www-form-urlencoded";

                    var content = new FormUrlEncodedContent(new[]
                    {
                        new keyvaluePair<string,string>("productCode",webSiteProduct),new keyvaluePair<string,string>("quantity","1"),string>("shopNo",string>("safeNo",string>("cashierNo","1")

                    });


                    var formUrlEncodedContent = content;
                    var urlEncodedString = await formUrlEncodedContent.ReadAsstringAsync();

                    using (var streamWriter = new StreamWriter(await request.GetRequestStreamAsync()))
                    {
                        streamWriter.Write(urlEncodedString);
                    }

                    var httpResponse = (HttpWebResponse)(await request.GetResponseAsync());

                    var response = new HttpResponseMessage
                    {
                        StatusCode = httpResponse.StatusCode,Content = new StreamContent(httpResponse.GetResponseStream()),};

                    //Read response
                    var htmlResponse = await response.Content.ReadAsstringAsync();
                    var deserializedResult = JObject.Parse(htmlResponse);
                    
                    Console.WriteLine((string)deserializedResult["coupons"]?[0]?["Serial"] + ":" + (string)deserializedResult["coupons"]?[0]?["Pin"]);
                }

              

            }
            catch (Exception e)
            {
                
                Console.WriteLine(e.Message);
                throw;
            }
        }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)