簡體   English   中英

使用公共異步任務從API HTTP Post返回json響應時,TResult應該是什么

[英]What should TResult be when using public async Task to return json response from API HTTP Post

帳戶服務:

public async Task<string> PostRegistrationToApi(NameValueCollection form)
        try
        {
            string str = await url.WithHeaders(new { Accept = "application /json", User_Agent = "Flurl" }).PostJsonAsync(myDictionary).ReceiveJson();
            return str;
        }

這是界面中的樣子:

public interface IAccountService
{
    Task<string> PostRegistrationToApi(NameValueCollection form);

這是我的控制器視圖:

                string str = await _accountService.PostRegistrationToApi(myform);
                return RedirectToAction("Register");

這是我收到的錯誤消息:

無法將類型'System.Dynamic.ExpandoObject'隱式轉換為'string'

我不知道如何解決此錯誤。 有人可以告訴我此錯誤消息的含義以及如何解決嗎? 起初,我以為是TResult類型問題,但即使將變量更改為字符串類型,也似乎與TResult一致。 我仍然遇到相同的錯誤。 謝謝!

您收到該錯誤是因為ReceiveJson返回的是dynamic而不是字符串。 這使您可以將結果作為具有屬性的對象使用,而不必聲明匹配的類。 這對於快速且骯臟的JSON響應非常方便,因為您知道響應的形狀不會改變,但是您放棄了編譯時類型檢查,因此在大多數情況下,我建議創建匹配的類並使用RecieveJson<T>

如果您確實想找回字符串,則可以改用ReceiveString 如果您只是將響應轉發到其他內容,或者將其轉儲到日志或其他有用的內容中。 但是,如果您需要以某種方式處理 JSON結果,我建議您使用ReceiveJsonReceiveJson<T>以便您可以將結果作為C#對象使用。

暫無
暫無

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

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