C#客户端提交含阿拉伯文本的JSON请求失败求助
解决方案
确保请求编码与头信息匹配
明确指定请求的Content-Type为application/json; charset=utf-8,同时用UTF-8编码序列化JSON内容,不要手动对阿拉伯文本做额外的HTML/JS编码——标准JSON序列化会自动处理特殊字符:// Newtonsoft.Json 示例 var json = JsonConvert.SerializeObject(yourRequestModel); var content = new StringContent(json, Encoding.UTF8, "application/json"); // System.Text.Json 示例 var json = JsonSerializer.Serialize(yourRequestModel); var content = new StringContent(json, Encoding.UTF8, "application/json");排查请求超时问题
阿拉伯文本可能使请求体体积增大,触发默认超时导致请求被取消。延长客户端超时时间:using (var client = new HttpClient()) { client.Timeout = TimeSpan.FromSeconds(30); // 根据实际场景调整时长 var response = await client.PostAsync(apiEndpoint, content); }捕获异常区分超时与手动取消:
try { var response = await client.PostAsync(apiEndpoint, content); response.EnsureSuccessStatusCode(); } catch (TaskCanceledException ex) { if (!ex.CancellationToken.IsCancellationRequested) { Console.WriteLine("请求因超时被取消"); } }检查网络配置差异
SoapUI可能使用了与C#客户端不同的代理/防火墙规则,尝试关闭代理或配置正确的代理:var handler = new HttpClientHandler { UseProxy = false // 若需代理,取消注释并配置 // Proxy = new WebProxy("http://your-proxy:port") }; using (var client = new HttpClient(handler)) { // 发送请求逻辑 }验证请求体大小限制
阿拉伯文的UTF-8编码会增加字节数,可能超出服务器的请求体大小限制。先简化请求(仅保留必要的阿拉伯文本字段)测试,若能成功则联系服务器端调整maxRequestBodySize相关配置。
内容的提问来源于stack exchange,提问作者Daniel
相关产品推荐
相关产品推荐

