c# - 通过 Web 客户端 post 方法传递两个 JSON 对象 C#

标签 c# post webclient asp.net-web-api

我需要使用 C# 中的 Web 客户端方法将以下对象作为 post 方法的参数传递。

     {
    "company":
    {
        "id": "e63dfcab345260b2591f585126ede56627db4ef2"
    },
    "requestor":
    {
        "id": "",
        "email": "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="dbb8aea8afb4b6bea99bbea3bab6abb7bef5b8b4b6" rel="noreferrer noopener nofollow">[email protected]</a> ",
        "firstName": "Test",
        "lastName": "Requestor",
        "role": "employerAdmin",
        "phone": "(415)1112222",
        "title": "HR Manager"
    }
}

我是这样转换的

company[id]=e63dfcab345260b2591f585126ede56627db4ef2&requestor[id]=&requestor[email]<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="bf82dccacccbd0d2dacdffdac7ded2cfd3da91dcd0d2" rel="noreferrer noopener nofollow">[email protected]</a>+&requestor[firstName]=Test&requestor[lastName]=Requestor&requestor[role]=employerAdmin&requestor[phone]=(415)1112222&requestor[title]=HR+Manager

但是我收到无效参数错误。请帮我。提前致谢。

我的整个代码如下:

 using (var Requestor = new System.Net.WebClient())
            {

                string url = "https://stormaas-pre.inflection.com:8443/v1/Requestor?";
                string parameters = "company[id]='757563a3-67df-4a6e-9ef9-d89d57d41e0d'&requestor[id]=''&requestor[email]='<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="50332523243f3d3522103528313d203c357e333f3d" rel="noreferrer noopener nofollow">[email protected]</a>'&requestor[firstName]='Test'&requestor[lastName]='Requestor'&requestor[role]='employerAdmin'&requestor[phone]='(415)1112222'&requestor[title]='HRManager'";
                Requestor.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");
                Requestor.Credentials = new System.Net.NetworkCredential("xyz:xyz!", "");
                Requestor.Encoding = System.Text.Encoding.UTF8;
                Requestor.Headers[HttpRequestHeader.ContentType] = "application/json";
                Requestor.Headers[HttpRequestHeader.Accept] = "text/xml";
                string res = Requestor.UploadString(url, "POST", parameters);
            }

最佳答案

您可以为请求者、公司创建 POCO 类,如下所示,并使用 JSON.net 为您进行转换。

public class Company
{
    public string Id { get; set; }
    // Other properties
}

public class Requestor
{
    public string Id { get; set; }

    public string Email { get; set; }

    public string FirstName { get; set; }

    public string LastName { get; set; }
    // Other properties
}

public class Container
{
    public Company Company { get; set; }

    public Requestor Requestor { get; set; }
}

var requestor = new Container();
requestor.Company = new Company { Id = "sampleid" };
requestor.Requestor = new Requestor
{
    FirstName = "test",
    LastName = "testname"
};

JsonSerializerSettings settings = new JsonSerializerSettings();
settings.ContractResolver = new CamelCasePropertyNamesContractResolver();
var data = JsonConvert.SerializeObject(requestor, settings);

WebClient client = new WebClient();
client.Headers.Add(HttpRequestHeader.ContentType, "application/json");
// Code for the credentials etc
client.UploadString(@"your url", data);

希望这有帮助。为此,您需要引用 JSON.net。由于您使用的是 .net 4.5 和 Web API,因此您应该已经有了引用资料。

关于c# - 通过 Web 客户端 post 方法传递两个 JSON 对象 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28874156/

相关文章:

c# - 从动态 JSON 属性 C# 中获取值

php - 将表单数据传递给 php 变量。变量似乎是空的

c# - 如何在 xamarin Android 中(从 URL)下载带有按钮的 apk?

java - vertx 调用后搜索域查询失败

C# webclient 和代理服务器

C# EF 6.1 - 带委托(delegate)的条件查询的 Strage 行为

c# - 在 Linq to SQL 中重写 NHibernate 应用程序

python - 传递CSRF token

c# - 将 JSON 数据传递给 REST POST 方法

c# - 将 asp.net 应用程序与 quickbooks 桌面版集成