繁体   English   中英

如何在 http 请求中指定预期的响应内容类型?

[英]How to specify the expected response content-type in a http request?

我的客户需要以 XML 格式表示的 .Net 数据集数据类型获取他的数据。 目前我的 api 返回一个 Json 类型的列表。 我怎样才能提出这样的要求?

在客户端(即 Asp.NET Web API)中:

var myHttpClient = new HttpClient();
myHttpClient.DefaultRequestHeaders.Add("Accept", "application/xml");
myHttpClient.DefaultRequestHeaders.Add("MyExpected-Content-Type", "Dataset");
var response = await myHttpClient.GetAsync(apiUrl);

在服务器中(即 Asp.NET Core Web API):

if (Request.Headers["MyExpected-Content-Type"] == "Dataset")
{
    DataSet ds = new DataSet();
    // ...
    return Ok(ds.GetXml());
}
else
{
    var lst = new List<Gifts>();
    // ...
    return Ok(lst);
}

这是你想要的吗? 我发现这个解决方案返回 XML,这个答案用于将 model 转换为 xml 字符串。

public IActionResult getHeader() {
            if (Request.Headers["MyExpected-Content-Type"] == "Dataset") {
                var user = new UserModel { age= 1, name="user1" };
                var writer = new StringWriter();
                var serializer = new XmlSerializer(typeof(UserModel));
                serializer.Serialize(writer, user);
                string xml = writer.ToString();
                return new ContentResult
                {
                    ContentType = "application/xml",
                    Content = xml,
                    StatusCode = 200
                };
            }
            else
            {
                var xml = "<result><value>hello</value></result>";
                return new ContentResult
                {
                    ContentType = "application/xml",
                    Content = xml,
                    StatusCode = 200
                };
            }
            
        }

这是我的测试结果:

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM