Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在ServiceStack JsonServiceClient上设置Accept标头_C#_.net_<img Src="//i.stack.imgur.com/WM7S8.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">servicestack_Github Api - Fatal编程技术网 servicestack,github-api,C#,.net,servicestack,Github Api" /> servicestack,github-api,C#,.net,servicestack,Github Api" />

C# 在ServiceStack JsonServiceClient上设置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

我正在使用ServiceStack.JsonServiceClient尝试使用Accept标头的自定义值发出URL请求,但找不到进行调用的方法

服务调用是通过GithubAPI检索存储库的主题。这是当前的预览功能,需要在accept标头上以自定义媒体类型发送其他信息。()

我正在使用服务堆栈并对API端点进行C#.NET调用,我正在努力找到适当的方法来更新请求的accept头。我试过两种策略

  • 使用头创建HttpWebRequest并将其传递给客户端

            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;
    });