【问题标题】:Token not retrieved for HttpGet未检索到 HttpGet 的令牌
【发布时间】:2020-06-18 16:02:30
【问题描述】:

我有一个 REST 服务器和一个 REST 客户端。我正在尝试从 REST-Server 获取文件。客户端中的代码是这样的:

public async System.Threading.Tasks.Task<FileResponse> GetThingAsync(string token, System.Threading.CancellationToken cancellationToken)
    {
        var urlBuilder_ = new System.Text.StringBuilder();
        urlBuilder_.Append(BaseUrl != null ? BaseUrl.TrimEnd('/') : "").Append("/GetThing/{token}");
        urlBuilder_.Replace("{token}", System.Uri.EscapeDataString(ConvertToString(token, System.Globalization.CultureInfo.InvariantCulture)));

        var client_ = _httpClient;
        try
        {
            using (var request_ = new System.Net.Http.HttpRequestMessage())
            {
                request_.Method = new System.Net.Http.HttpMethod("GET");
                request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/octet-stream"));

                PrepareRequest(client_, request_, urlBuilder_);
                var url_ = urlBuilder_.ToString();
                request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute);
                PrepareRequest(client_, request_, url_);

                var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false);
               ...

服务器中的代码是这样的:

 [HttpGet("GetThing/{token}")]
    public async Task<IActionResult> GetThing(string thingId)
    {            
        string tokens = thingId;  //line is reached but the 'thingId' is always empty!

为什么“thingId”没有出现在服务器中?我必须通过其他方式吗?

【问题讨论】:

    标签: c# rest get httpclient


    【解决方案1】:

    我发现了这个bug:在服务器中,参数的名称必须与上面一行中的相同。所以将 'thingId' 重命名为 'token' 是解决方案。

    【讨论】:

      猜你喜欢
      • 2015-08-30
      • 2015-03-26
      • 2019-05-23
      • 1970-01-01
      • 2020-10-29
      • 2017-10-13
      • 1970-01-01
      • 1970-01-01
      • 2021-09-05
      相关资源
      最近更新 更多