C# 在ServiceStack JsonServiceClient上设置Accept标头
我正在使用ServiceStack.JsonServiceClient尝试使用Accept标头的自定义值发出URL请求,但找不到进行调用的方法 服务调用是通过GithubAPI检索存储库的主题。这是当前的预览功能,需要在accept标头上以自定义媒体类型发送其他信息。() 我正在使用服务堆栈并对API端点进行C#.NET调用,我正在努力找到适当的方法来更新请求的accept头。我试过两种策略C# 在ServiceStack JsonServiceClient上设置Accept标头,c#,.net,
servicestack,github-api,C#,.net,
servicestack,Github Api,我正在使用ServiceStack.JsonServiceClient尝试使用Accept标头的自定义值发出URL请求,但找不到进行调用的方法 服务调用是通过GithubAPI检索存储库的主题。这是当前的预览功能,需要在accept标头上以自定义媒体类型发送其他信息。() 我正在使用服务堆栈并对API端点进行C#.NET调用,我正在努力找到适当的方法来更新请求的accept头。我试过两种策略 使用头创建HttpWebRequest并将其传递给客户端 Uri uri = new U
Uri uri = new Uri(requestUrl, UriKind.Absolute);
HttpWebRequest webRequest = (HttpWebRequest) WebRequest.Create(uri);
webRequest.Accept = "application/vnd.github.mercy-preview+json";
HttpWebResponse webResponse = client.Get<HttpWebResponse>(webRequest);
Uri=新的Uri(requestUrl,UriKind.Absolute);
HttpWebRequest webRequest=(HttpWebRequest)webRequest.Create(uri);
webRequest.Accept=“application/vnd.github.mercy preview+json”;
HttpWebResponse-webResponse=client.Get(webRequest);
requestUrl
是一个https://api.github.com/repos/{owner}/{repo}?访问令牌={token}
。它成功创建Uri和HttpWebRequest对象,但随后在客户端上引发异常。Get
,声称无效Uri:无法确定Uri的格式。
使用以下字符串URL调用API:HttpWebResponse-webResponse=client.Get(requestUrl)代码>成功,无问题(但未传递自定义标头值)
client.AddHeaders
引发异常,因为Accept
是受限制的头。我一直无法找到任何其他方法直接在客户机上设置头(尽管这可能是最好的解决方案)谢谢,如果还有什么我可以提供的,请告诉我。在发送请求之前,您可以使用
RequestFilter
修改HttpWebRequest
,例如:
var client = new JsonServiceClient(baseUrl) {
RequestFilter = req => req.Accept = acceptHeader
};
注意:ServiceStack只能用于调用ServiceStack服务。对于调用第三方API,您应该改为使用,例如:
var body = url.GetStringFromUrl(requestFilter: req => {
req.Accept = acceptHeader;
});