簡體   English   中英

如何在.core 中使用“ReadAsAsync”

[英]How to use “ReadAsAsync” in .core

我需要使用 cutt.ly URL 更短的 API 並且我遵循它的文檔以及我如何使用它

Cutt.ly 文檔

class Program
{
    private const string URL = "https://cutt.ly/api/api.php";
    private static string urlParameters = "?key=ddbbdd323230fbf3e0b9&short=https://www.google.com&name=Test";
    static void Main(string[] args)
    {
        HttpClient client = new HttpClient();
        client.BaseAddress = new Uri(URL);

        client.DefaultRequestHeaders.Accept.Add(
        new MediaTypeWithQualityHeaderValue("application/json"));

        HttpResponseMessage response = client.GetAsync(urlParameters).Result;.
        if (response.IsSuccessStatusCode)
        {
            var dataObjects = response.Content.ReadAsAsync().Result;
            foreach (var d in dataObjects)
            {
                Console.WriteLine("{0}", d.ToString());
            }
        }
        else
        {
            Console.WriteLine("{0} ({1})", (int)response.StatusCode, response.ReasonPhrase);
        }

        client.Dispose();
        Console.ReadLine();
    }
}

但問題是我得到以下編譯錯誤。

'HttpContent' does not contain a definition for 'ReadAsAsync' and no accessible extension method 'ReadAsAsync' accepting a first argument of type 'HttpContent' could be found

我正在使用 .net 內核。 我如何使用 .net 內核來處理這個問題。 我發現了這個問題 但我不清楚它的答案。

我在這里之前做過這個 你必須安裝 Newtonsoft.Json nuget package

CuttlyApiKey 是您的 api 鍵, SelectedCustomText 是您的鏈接的自定義名稱,如果您不想設置自定義名稱,您可以設置 string.empty

public async Task<string> CuttlyShorten(string longUrl)
        {

            try
            {
                string url = string.Format("https://cutt.ly/api/api.php?key={0}&short={1}&name={2}", CuttlyApiKey, HttpUtility.UrlEncode(longUrl), SelectedCustomText);

                using (HttpClient client = new HttpClient())
                using (HttpResponseMessage response = await client.GetAsync(url))
                using (HttpContent content = response.Content)
                {
                    dynamic root = JsonConvert.DeserializeObject<dynamic>(response.Content.ReadAsStringAsync().Result);

                    string statusCode = root.url.status;
                    if (statusCode.Equals("7"))
                    {
                        string link = root.url.shortLink;

                        return link;
                    }
                    else
                    {
                        string error = root.status;
                        
                    }

                }
            }
            catch (Exception ex)
            {
                
            }


            return "error";
        }

用法:

var shortUrl = await CuttlyShorten(url);

創建類並嘗試以下代碼:

public class ResponseData
{
public int Status {get; set;}
public string FullLink {get; set;}
public string  Date {get; set;}
public string ShortLink {get; set;}
public string Title {get; set;}
}

public class UrlResponseData
{
public ResponseData Url {get; set;}
}


var stringData = response.Content.ReadAsStringAsync().Result;
var result = JsonConvert.DeserializeObject<UrlResponseData>(stringData);

您必須安裝 Newtonsoft.Json nuget package 才能從 Z466DEEC16ECDF5FCA6D4Z52 轉換。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM