HTTPClient GetAsync post对象

时间:2014-03-19 11:54:24

标签: asp.net-mvc asp.net-mvc-4 asp.net-web-api

我们目前有一个通用的MVC方法,可以从ASP.NET Web API获取GET数据

 public static T Get<T>(string apiURI, object p)
    {
        using (HttpClient client = new HttpClient())
        {
            client.BaseAddress = new Uri(Config.API_BaseSite);

            HttpResponseMessage response = client.GetAsync(apiURI).Result;


            // Check that response was successful or throw exception  
            if (response.IsSuccessStatusCode == false)
            {
                string responseBody = response.Content.ReadAsStringAsync().Result;
                throw new HttpException((int)response.StatusCode, responseBody);
            }

            T res = response.Content.ReadAsAsync<T>().Result;
            return (T)res;
        }
    }

我们的问题是: - 显然,我们不能发送&#39; p&#39;就像你发帖子一样,

  client.PostAsync(apiURI, new StringContent(p.ToString(), Encoding.UTF8, "application/json")

但我们如何使用get发送此对象/ JSON。 我们已经看到将其作为URL的一部分发送,但是,还有其他选择吗?

1 个答案:

答案 0 :(得分:1)

GET 使用查询字符串(url的结尾)发送值,关于&#34;但我们如何使用get发送此对象/ JSON。我们已经看到将其作为URL的一部分发送,但是,是否有替代方案?&#34;。

替代方案是 POST PUT

当用户创建密钥/网址时,最好使用

PUT 。您可以查看cnn.com等示例 - 其中URL只是文章标题的简短版本。您想要在该网址上设置页面。

实施例: http://newday.blogs.cnn.com/2014/03/19/five-things-to-know-for-your-new-day-wednesday-march-19-2014/?hpt=hp_t2

有&#34;五个事情 - 你知道的新事物 - 星期三 - 三月 - 19-2014&#34;,这是由文章标题&#34;生成的。新的一天要知道的五件事 - 2014年3月19日,星期三&#34;

一般来说,您应遵循以下准则:

如果要从服务器获取数据,请使用 GET 。想想搜索引擎。您可以在查询字符串中查看搜索查询。您也可以预订标记。它根本不会改变服务器上的任何内容。

如果要创建资源,请使用 POST

如果要创建资源,请使用 PUT ,但也会覆盖它们。如果您将对象PUT两次,则服务器状态仅更改一次。 POST

的情况恰恰相反

如果要删除内容

,请使用删除

POST和PUT都不使用查询字符串。 GET确实