加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 如何使用.net webapi保存对象

发布时间:2020-12-16 00:20:55 所属栏目:百科 来源:网络整理
导读:我在.net(我的第一个)中创建了WebAPI.使用这个api从db获取对象,查询db等对我来说很容易.没什么新鲜的 但我想知道如何使用这个webapi保存对象? 我有一个与我的webapi通信的clinet应用程序(平板电脑,手机,PC).从我的应用程序中可以保存用户新闻.现在我需要将
我在.net(我的第一个)中创建了WebAPI.使用这个api从db获取对象,查询db等对我来说很容易.没什么新鲜的

但我想知道如何使用这个webapi保存对象?

我有一个与我的webapi通信的clinet应用程序(平板电脑,手机,PC).从我的应用程序中可以保存用户新闻.现在我需要将其保存在db中.我使用Azure SQL.现在我如何将此对象传递给API,以便我可以保存它?

对于我的应用程序,我使用C#/ XAML
对于我的WebAPI,我使用.NET

我正在使用这段代码:

HttpClient httpClient = new HttpClient();
        String u = this.apiUrl + "sd/Localization/insert";
        Uri uri = new Uri(u);
        HttpRequestMessage httpRequestMessage = new HttpRequestMessage(HttpMethod.Post,uri);

但我不知道如何发送对象?我应该序列化吗?如果是,如何通过邮寄发送.

//更新

我已经构建了这个

HttpClient httpClient = new HttpClient();
        String u = this.apiUrl + "sd/Localization/insert";
        Uri uri = new Uri(u);
        HttpRequestMessage httpRequestMessage = new HttpRequestMessage(HttpMethod.Post,uri);
        httpRequestMessage.Content = new StringContent("{'Name':'Foo','Surname':'Bar'}");
        await httpClient.PostAsync(uri,httpRequestMessage.Content);

但在我的API中,变量为null

这是我api的代码

// POST sd/Localization/insert
    public void Post(string test)
    {
        Console.WriteLine(test);
    }

“test”变量为null.
我究竟做错了什么 ?

//更新2

using (HttpClient httpClient = new HttpClient())
        {
            String u = this.apiUrl + "sd/Localization/insert";
            Uri uri = new Uri(u);
            HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post,uri)
            {
                Method = HttpMethod.Post,Content = new StringContent("my own test string")
            };

            await httpClient.PostAsync(uri,request.Content);
        }

路由配置

public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapHttpRoute(
            name: "DefaultApi",routeTemplate: "sd/{controller}/{id}",defaults: new { id = RouteParameter.Optional }
        );

        routes.MapRoute(
            name: "Default",url: "{controller}/{action}/{id}",defaults: new { controller = "Home",action = "Index",id = UrlParameter.Optional }
        );
    }
}

在你所有的答案之后我创造了这个,但我仍然在我的api的param上得到null.哪里出错了?

解决方法

WebAPI非常擅长解析发送给它的数据并将其转换为.NET对象.

我不习惯使用带有WebAPI的C#客户端,但我会尝试以下方法:

var client = new HttpClient();
client.PostAsJsonAsync<YourObjectType>("uri",yourObject);

注意:您需要使用System.Net.Http(来自具有相同名称的程序集)以及System.Net.Http.Formatting(也来自具有相同名称的程序集).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读