Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将动态对象传递给应用程序中Post数据的通用方法_C#_Asp.net Web Api_Httpclient - Fatal编程技术网

C# 将动态对象传递给应用程序中Post数据的通用方法

C# 将动态对象传递给应用程序中Post数据的通用方法,c#,asp.net-web-api,httpclient,C#,Asp.net Web Api,Httpclient,在我的应用程序中,它正在调用webapi,应用程序位于MVC5中。现在我在应用项目中有了更多的方法。所以我想创建一个通用(全局)方法来调用api。用于获取内容的方法工作正常,但用于发布(意味着将数据保存到DB类)数据的方法,会出现如下错误。代码如下所示: public static string SendDataToAPI(dynamic objCommon, string urlParameters, ref string errorMessage) { try { s

在我的应用程序中,它正在调用webapi,应用程序位于MVC5中。现在我在应用项目中有了更多的方法。所以我想创建一个通用(全局)方法来调用api。用于获取内容的方法工作正常,但用于发布(意味着将数据保存到DB类)数据的方法,会出现如下错误。代码如下所示:

public static string SendDataToAPI(dynamic objCommon, string urlParameters, ref string errorMessage)
{
    try {
        string url = ConfigurationSettingHelper._BaseUrl;
        string strJson = string.Empty;
        using (HttpClient client = new HttpClient())
        {
            client.BaseAddress = new Uri(url);
            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));

            var response = client.PostAsJsonAsync(urlParameters, objCommon);

            if (response.Result.IsSuccessStatusCode)
            {
                strJson = response.Result.Content.ReadAsStringAsync().Result;
            }
            else {
                errorMessage = response.Result.Content.ReadAsStringAsync().Result;
            }

            return strJson;
        }
    }
    catch (Exception ex) {
        errorMessage = ex.Message;
        return errorMessage;
    }
}

所以,我的问题是如何在
PostAsJsonAsync
方法中传递动态对象类型?如何将这种方法设置为常用方法?

尝试下面的方法,其中post数据模型一般接受任何类型,并且复杂对象也应包装到单个模型中

public async virtual Task<string> ExecuteHttpApiCall<TModel>(TModel model, string url)
        {
            HttpResponseMessage response;
            using (var client = new HttpClient())
            {
                if (model != null)
                {
                    response = await client.PostAsJsonAsync(url, model);
                }
                else
                {
                    response = await client.GetAsync(url);
                }

                return await response.Content.ReadAsStringAsync();
            }
        }
公共异步虚拟任务ExecuteHttpApiCall(TModel模型,字符串url)
{
HttpResponseMessage响应;
使用(var client=new HttpClient())
{
如果(型号!=null)
{
response=wait client.PostAsJsonAsync(url,型号);
}
其他的
{
response=wait client.GetAsync(url);
}
return wait response.Content.ReadAsStringAsync();
}
}

您可以创建一个匿名对象,如-
var employee={Name=“James”,Age=30}
并使用Newtonsoft将其转换为JSON,然后将其传递给
PostAsJsonAsync