c# - 在 Web api 中使用 FormUrlEncoded 或 Json 发布数据
问题描述
我创建了通用方法,我们通过该方法将数据发布到 Web api。在发布时,我将数据序列化为 json。下面是我的通用方法。
public HttpResponseMessage GetData<T>(T parm, string url) where T : class
{
try
{
var client = new HttpClient();
var result = client.PostAsync(url, SerializeData<T>(parm));
result.Wait();
if (result.Result.IsSuccessStatusCode)
{
// Do something
}
}
catch (Exception ex)
{
throw ex;
}
return default(HttpResponseMessage);
}
private StringContent SerializeData<T>(T obj)
{
string mediaType = "application/json";
string content = JsonConvert.SerializeObject(obj, formatter);
return new StringContent(content, Encoding.UTF8, mediaType);
}
如果我从调用者方法传递类对象,这工作正常
var result = service.GetData<MyClass>(myclassobj,url);
但是,对于某些通过类对象传递的 url 不起作用。因此,我们编写了另一种方法,以FormUrlEncodedContent格式发布数据,如下所示,它工作正常。
var Parameters = new Dictionary<string, string> { { "Key1", "some value" }, { "Key2", "another value" } };
var EncodedContent = new FormUrlEncodedContent(Parameters);
var postTask = _client.PostAsync(url, EncodedContent);
我试图将 FormUrlEncoded 数据发送到 JSON 方法,并通过更改媒体类型。但无法正确序列化它。我们使用的 api/服务来自第三方提供商。
所以我的问题是需要对适用于所有格式(如 JSON、FormUrlEncodedContent 等)的方法进行哪些更改。
此外,它是否取决于 api 的写入方式,它们仅适用于特定格式,如 JSON、FormUrlEncodedContent 等。
基本上,我试图保留一种支持所有格式的通用方法。
对此的任何帮助表示赞赏!
解决方案
推荐阅读
- django - Django,如何在 Listview 上显示 2 个模型
- wxwidgets - 使用带有 wxWidgets 的 Github CI 管道
- r - 数据框:有条件地将特定值与其他列的所有值进行比较,并将结果向量存储在列表列中
- hive - Hive 有条件地选择列名
- laravel - 如何降低 AWS S3 数据传输成本?
- javascript - 在 iOS 中使用 WWebView 检测 Javascript 方法
- scala - 变量值的字符串插值
- java - 如何将屏幕截图附加到 selenium java cucumber 的 azure 报告
- python - 是否可以直接从存储的 tkinter 小部件中引用变量?
- python - 试图将列表添加到文本文件中,出现错误