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源,以帮助解决问题。