You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中动态拼接参数调用GetAsync API返回Bad Request问题

C#动态拼接URL调用GetAsync返回Bad Request的解决办法

问题场景

动态拼接参数生成Uri调用GetAsync时返回Bad Request:

Uri URL = new Uri($"https://authenticom.azure-api.net/dv-delivery/v1/delivery/?requestId={requestId}&pageSize={pageSize}");
HttpResponseMessage response = client.GetAsync(URL).Result;

但将生成的URL字符串硬编码后调用却能正常执行:

HttpResponseMessage response = client.GetAsync("https://authenticom.azure-api.net/dv-delivery/v1/delivery/?requestId=1994bb2d-afc3-4323-b7da-c2c695dd4307&pageSize=100").Result;

问题原因

直接通过字符串插值拼接URL参数时,若参数包含特殊字符(如空格、&、=、中文等),会导致URL格式不符合规范。虽然Uri构造函数会做部分编码处理,但这种手动拼接方式容易遗漏编码步骤,最终生成的URL因参数未正确编码被服务端判定为无效请求。

解决方案

方案1:用QueryHelpers构建带参数的URL(推荐.NET Core/.NET 5+使用)

借助Microsoft.AspNetCore.WebUtilities.QueryHelpers可以安全地添加查询参数,自动处理编码:

using Microsoft.AspNetCore.WebUtilities;

var baseUrl = "https://authenticom.azure-api.net/dv-delivery/v1/delivery/";
var queryParams = new Dictionary<string, string>
{
    { "requestId", requestId },
    { "pageSize", pageSize.ToString() }
};
var url = QueryHelpers.AddQueryString(baseUrl, queryParams);
HttpResponseMessage response = client.GetAsync(url).Result;

方案2:用UriBuilder构建URL(兼容.NET Framework)

通过UriBuilder和HttpUtility.ParseQueryString来管理查询参数,自动完成编码:

using System.Web;

var builder = new UriBuilder("https://authenticom.azure-api.net/dv-delivery/v1/delivery/");
var query = HttpUtility.ParseQueryString(builder.Query);
query["requestId"] = requestId;
query["pageSize"] = pageSize.ToString();
builder.Query = query.ToString();
Uri url = builder.Uri;
HttpResponseMessage response = client.GetAsync(url).Result;

方案3:手动编码参数后拼接

如果需要手动拼接,先对每个参数进行URL编码:

string encodedRequestId = Uri.EscapeDataString(requestId);
string encodedPageSize = Uri.EscapeDataString(pageSize.ToString());
Uri url = new Uri($"https://authenticom.azure-api.net/dv-delivery/v1/delivery/?requestId={encodedRequestId}&pageSize={encodedPageSize}");
HttpResponseMessage response = client.GetAsync(url).Result;

内容的提问来源于stack exchange,提问作者Vishal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 04:06:20