POST API文件提交返回200但响应内容为空的问题排查
问题:API文件提交返回200但响应为空,Postman可正常调用
- 调用API提交文件时,返回状态码200但响应内容为空
- 改用RestSharp调用仍出现相同问题,但通过Postman发起请求可成功
- checkStatus接口在C#代码中调用正常,仅文件提交环节存在异常
HttpClient实现代码
static async Task SubmitFileToRestApi(string apiUrl, string permitNumber, string securityKey, string remoteFileName, string localFileName) { try { using (HttpClient httpClient = new HttpClient()) using (var form = new MultipartFormDataContent()) using (var fileStream = new FileStream(localFileName, FileMode.Open, FileAccess.Read)) { form.Add(new StringContent("savenic"), "apicall"); form.Add(new StringContent(permitNumber), "permit_nbr"); form.Add(new StringContent(securityKey), "sec_key"); form.Add(new StringContent(Path.GetFileName(localFileName)), "filename"); var fileContent = new StreamContent(fileStream); fileContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/pdf"); form.Add(fileContent, "file", Path.GetFileName(localFileName)); // 日志记录请求内容 Console.WriteLine("Request Content:"); foreach (var content in form) { Console.WriteLine($"{content.Headers.ContentDisposition}"); } var response = await httpClient.PostAsync(apiUrl, form); var responseContent = await response.Content.ReadAsStringAsync(); // 日志记录响应状态和头部 Console.WriteLine("Response Status: " + response.StatusCode); foreach (var header in response.Headers) { Console.WriteLine($"{header.Key}: {string.Join(", ", header.Value)}"); } Console.WriteLine($"Response: {responseContent}"); } } catch (Exception ex) { Console.WriteLine($"提交文件时发生错误: {ex.Message}"); if (ex.InnerException != null) { Console.WriteLine($"内部异常: {ex.InnerException.Message}"); } } }
RestSharp实现代码
static async Task SubmitFileToRestApi(string apiUrl, string permitNumber, string securityKey, string remoteFileName, string localFileName) { // 绕过SSL证书验证(适用于自签名证书测试场景) ServicePointManager.ServerCertificateValidationCallback = delegate { return true; }; var client = new RestClient(apiUrl); var request = new RestRequest("", Method.Post); request.AddParameter("apicall", "savenoc"); request.AddParameter("permit_nbr", permitNumber); request.AddParameter("sec_key", securityKey); request.AddFile("file", localFileName, "application/pdf"); request.AddParameter("filename", Path.GetFileName(localFileName)); try { var response = await client.ExecuteAsync(request); // 日志记录响应详情 Console.WriteLine("Response Status: " + response.StatusCode); Console.WriteLine("Response Content: " + response.Content); Console.WriteLine("Response Error Message: " + response.ErrorMessage); Console.WriteLine("Response Headers: "); foreach (var header in response.Headers) { Console.WriteLine($"{header.Name}: {header.Value}"); } } catch (Exception ex) { Console.WriteLine($"提交文件时发生错误: {ex.Message}"); } }
内容的提问来源于stack exchange,提问作者codeDonkey
相关产品推荐
相关产品推荐

