C# Xamarin:将HttpClient POST与动态类结合使用

C# Xamarin:将HttpClient POST与动态类结合使用,c#,xamarin.ios,xamarin,json.net,httpclient,C#,Xamarin.ios,Xamarin,Json.net,Httpclient,我有一些服务需要相当复杂的对象。每个服务使用几乎相同的基本对象,但需要为每个服务扩展它 一个简单的例子: 标准对象类似于: ContextObject { params { Device { Name: "MyMobileDevice", ID: 123455691919238 } } } ContextObject { params { Device { Name:

我有一些服务需要相当复杂的对象。每个服务使用几乎相同的基本对象,但需要为每个服务扩展它

一个简单的例子: 标准对象类似于:

ContextObject {
    params {
       Device {
          Name: "MyMobileDevice",
          ID: 123455691919238
       }
    }
}
ContextObject {
    params {
       Device {
          Name: "MyMobileDevice",
          ID: 123455691919238
       },
       requested_employee_id: 112929
    }
}
对于我的服务,我需要在params下添加一些属性, 比如:

ContextObject {
    params {
       Device {
          Name: "MyMobileDevice",
          ID: 123455691919238
       }
    }
}
ContextObject {
    params {
       Device {
          Name: "MyMobileDevice",
          ID: 123455691919238
       },
       requested_employee_id: 112929
    }
}
我试图通过使用JObject来实现这一点,但到目前为止,我还没有找到一个合适的例子来说明如何使用HttpClient将此对象发送到我的服务器

编辑: 这是我的完整作业项目,所有请求都需要:

        public static JObject DefaultContext (string ServiceMethod) {
        var Context = new JObject();
        Context["version"] = "1.1";
        Context["method"] = ServiceMethod;
        Context["params"] = JObject.FromObject( new {
            Context = JObject.FromObject( new {
                User = App.UserSettings.USERNAME,
                Password = App.UserSettings.PASSWORD,
                SerialNumber = "1234567890", // TODO: use generated id
                Locale = "de-DE",
                Timestamp = DateTime.Now.ToString("yyyy-MM-ddTHH\\:mm\\:ss.fffzzz"),

                Device = JObject.FromObject( new {
                    DeviceType = "phone",
                    ProductType = "D6603", // TODO: Get from Device-Info
                    screen = JObject.FromObject( new {
                        Density = "xxhdpi", // TODO: Get from Device-Info
                        resolution = JObject.FromObject( new {
                            Height = "1920", // TODO: Get from Device-Info
                            Width = "1080" // TODO: Get from Device-Info
                        })
                    }),
                    version = JObject.FromObject( new {
                        AppVersion = "myAppVersion", // TODO: Get App-Information                           LayoutVersion = "1.0"
                    } )
                })
            })
        });

        return mobileContext;
    }
对于我的请求,我需要在params节点下添加参数。它与:

mobileContext["params"]["mynewparameter"] = "FOO";
现在我想通过System.Net.Http-Client将此JObject发送到我的服务器,如下所示:

var client = new HttpClient ();
client.BaseAddress = new Uri (App.UserSettings.HOST + ":" + App.UserSettings.PORT + App.UserSettings.TYPE);
client.Timeout = 3000;      

var context = MyContext.DefaultContext (ServiceMethods.CUSTOMER_LIST_METHOD);   
context ["params"] ["myrequestparam"] = "FOO";
var jsonString = JsonConvert.SerializeObject (context);
var responseData = await client.Get???????
我的一般方法正确吗?你会怎么做?有没有关于如何处理这种动态事物的示例?
我找不到一个关于如何在Newtonsoft.JSON-Library中正确使用httpclient的示例我离实际工作代码还有多远?

Hi-JavaLui,欢迎使用Stack Overflow!我对你的帖子进行了编辑,使其更加清晰:我删除了一些不必要的问候语/感谢语,但出于礼貌,因此它被认为是不必要的信息,不应该出现在问题中,我还修复了一些拼写/次要格式问题。您的问题似乎很清楚,但如果您对JObject的尝试和HttpClient的尝试做一点扩展,可能会对人们有所帮助。希望你能得到一些答案!谢谢你。我将在今天晚些时候添加我的JObject源,以帮助解决问题。