Digant Jani
Digant Jani

Reputation: 133

API is giving Error {{System.Runtime.CompilerServices.AsyncTaskMethodBuilder1+AsyncStateMachineBox1}}

I am creating a API consumption tool where I have a issue in which It is giving following error when I try to call API. Please help me with this. I am trying to get CSV file and converted to TXT format with this API.

System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[System.String,StarRezToolApp.Program+<HTTP_GET>d__2]

public static void GetReportInformation(string file_path_1, string Filename)
    {

        Utility.Utility.Log("TestFIle Reached");
        var report_data = HTTP_GET();

        Console.WriteLine(report_data.ToString());

        var sb_csv = new StringBuilder();

        try
        {
            if (File.Exists(file_path_1 + Filename))
            {
                using (StreamWriter apiresponse = File.AppendText(file_path_1 + Filename))
                {
                    apiresponse.Write(report_data.ToString());
                    apiresponse.WriteLine();
                }
            }
            else
            {
                using (StreamWriter apiresponse = new StreamWriter(file_path_1 + Filename))
                {
                    apiresponse.Write(report_data.ToString());
                    apiresponse.WriteLine();
                }
            }
            

            Utility.Utility.Log("File Created Successfully.");
           
        }
        catch (Exception ex)
        {
            Utility.Utility.Log("Error: Could Not Convert. Original error: " + ex.Message);
        }

    }

I have been calling the following method for other information:

private static async Task<string> HTTP_GET()
    {
        var TARGETURL = Properties.Resources.URL + Properties.Resources.Report_Name;


        Console.WriteLine("GET: + " + TARGETURL);
        Utility.Utility.Log("GET: + " + TARGETURL);
        
        NetworkCredential credentials = new NetworkCredential(Properties.Resources.Username, Properties.Resources.Tocken.ToString());
        HttpClientHandler handler = new HttpClientHandler 
        { 
            Credentials = credentials 
        };

        // ... Use HttpClient with handlers which has credentials
        HttpClient client = new HttpClient(handler);

        HttpResponseMessage response = await client.GetAsync(TARGETURL);
        HttpContent content = response.Content;

        // ... Check Status Code         
        Utility.Utility.Log("Response StatusCode: " + (int)response.StatusCode);                                 
        Console.WriteLine("Response StatusCode: " + (int)response.StatusCode);

        // ... Read the string.
        string result = await content.ReadAsStringAsync();

        // ... Display the result.
        if (result != null && result.Length >= 50)
        {
            
            Utility.Utility.Log("Response message: Successful");
            return result.ToString();
        }
        else
        {
            Utility.Utility.Log("Response message: " + response.Content);
            return null;
        }
    }

Upvotes: 1

Views: 13923

Answers (1)

Digant Jani
Digant Jani

Reputation: 133

Thank you Mr. @RuardvanElburg. I got the solution by your help.

My controller method GetReportInformationAsync needs to await for response to get out.

Upvotes: 8

Related Questions