添加缺失的 Header 个值
Add missing Header values
我已经使用 MVC4 Web API 编写了一个 RESTful 网络服务。调用我的 Web 服务的客户之一发布 XML body,但收到 JSON 响应。
我了解到客户端未设置 Content-type 的 header 值:application/xml 或接受:application/xml.
调用我的 Web 服务的客户是世界上最大的公司之一,拒绝添加所需的 header 值。
所以我的问题是,如何添加客户端未发送的缺失 header 值,以便我的 Web 服务可以 return 在 XML 中做出响应?
或者如何让我的 Web 服务在 XML 中响应缺失?
我尝试将以下内容添加到 Global.asax.cs;
protected void Application_BeginRequest(object sender, EventArgs e)
{
if (HttpContext.Current.Request.HttpMethod == "POST"
&& HttpContext.Current.Request.CurrentExecutionFilePath.Contains("OrderInformation"))
{
HttpContext.Current.Request.Headers.Add("content-type", "application/xml");
HttpContext.Current.Request.Headers.Add("Accept", "application/xml");
}
}
但是运行时抛出异常
TIA
马特
谢谢GPW。你的 link 帮助,我创建了一个 DelegatingHandler 来更正请求 header
public class MediaTypeDelegatingHandler : DelegatingHandler
{
protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
var url = request.RequestUri.ToString();
if (url.Contains("OrderInformation"))
{
request.Headers.Accept.Clear();
request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/xml"));
}
return await base.SendAsync(request, cancellationToken);
}
}
我已经使用 MVC4 Web API 编写了一个 RESTful 网络服务。调用我的 Web 服务的客户之一发布 XML body,但收到 JSON 响应。
我了解到客户端未设置 Content-type 的 header 值:application/xml 或接受:application/xml.
调用我的 Web 服务的客户是世界上最大的公司之一,拒绝添加所需的 header 值。
所以我的问题是,如何添加客户端未发送的缺失 header 值,以便我的 Web 服务可以 return 在 XML 中做出响应?
或者如何让我的 Web 服务在 XML 中响应缺失?
我尝试将以下内容添加到 Global.asax.cs;
protected void Application_BeginRequest(object sender, EventArgs e)
{
if (HttpContext.Current.Request.HttpMethod == "POST"
&& HttpContext.Current.Request.CurrentExecutionFilePath.Contains("OrderInformation"))
{
HttpContext.Current.Request.Headers.Add("content-type", "application/xml");
HttpContext.Current.Request.Headers.Add("Accept", "application/xml");
}
}
但是运行时抛出异常
TIA
马特
谢谢GPW。你的 link 帮助,我创建了一个 DelegatingHandler 来更正请求 header
public class MediaTypeDelegatingHandler : DelegatingHandler
{
protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
var url = request.RequestUri.ToString();
if (url.Contains("OrderInformation"))
{
request.Headers.Accept.Clear();
request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/xml"));
}
return await base.SendAsync(request, cancellationToken);
}
}