HttpWebRequest request = (HttpWebRequest)WebRequest.Create(@"https://api.weixin.qq.com/cv/ocr/comm?access_token=" + getAccessToken());
request.Method = "post";
request.ContentType = "multipart/form-data";
byte[] datas = File.ReadAllBytes(@imgPath);
request.ContentLength = datas.Length;
Stream stream = request.GetRequestStream();
stream.Write(datas, 0, datas.Length);
stream.Close();
try {
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader myStreamReader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
string retString = myStreamReader.ReadToEnd();
Debug.WriteLine(retString);
return null;
} catch {
Debug.WriteLine("失败");
return null;
}
返回是:{"errcode":41005,"errmsg":"media data missing hint: [Jceyla0861w783] rid: 641c203d-7e15e206-523ae08c"}
这是什么情况呢?

[HttpPost] public async Task<IActionResult> XCXOCR(string text1, string text2, string text3, IFormFile fileInput) { Result _Result = new() { Error = 0, Message = "获取编号成功!" }; try { string _token = "103_vcn-JoX7KqJY1HvQ_nRdpLPZvzWSfuYbvUPWAFO2cEappJE27faSKndA7pSHfp4h1d7ptBYE-H_CIV_uoxn1xlPL-Yum-LWOUuAu3Q970wmbFc49i5woJI_WODMIRAdAAATCL"; IFormFile _ReceiveFile = fileInput; var ext = System.IO.Path.GetExtension(_ReceiveFile.FileName).ToLowerInvariant(); if (string.IsNullOrEmpty(ext) || !permittedExtensions.Contains(ext)) { _Result.Error = 8; _Result.Message = "上传的文件格式不正确!"; goto ExitProgram; } bool _isfileformat = false; _ReceiveFile.OpenReadStream().Seek(0, SeekOrigin.Begin); using (var reader = new BinaryReader(_ReceiveFile.OpenReadStream())) { var signatures = _fileSignature[ext]; var headerBytes = reader.ReadBytes(signatures.Max(m => m.Length)); _isfileformat = signatures.Any(signature => headerBytes.Take(signature.Length).SequenceEqual(signature)); } if (!_isfileformat) { _Result.Error = 9; _Result.Message = "上传的文件签名不正确!"; goto ExitProgram; } try { _ReceiveFile.OpenReadStream().Seek(0, SeekOrigin.Begin); using (var imgBmp = new System.Drawing.Bitmap(_ReceiveFile.OpenReadStream())) { } } catch { _Result.Error = 10; _Result.Message = "上传的并非图片文件!"; goto ExitProgram; } string apiUrl = $"https://api.weixin.qq.com/cv/ocr/comm?access_token={_token}"; using (var httpClient = new HttpClient()) { // 1. 读取文件内容 byte[] fileBytes; using (var ms = new MemoryStream()) { await _ReceiveFile.CopyToAsync(ms); fileBytes = ms.ToArray(); } string boundary = "------------------------" + DateTime.Now.Ticks.ToString("x"); byte[] multipartBody = BuildMultipartBody(fileBytes, _ReceiveFile.FileName, _ReceiveFile.ContentType, boundary); // 3. 创建 ByteArrayContent 并设置 Content-Type 头 var byteContent = new ByteArrayContent(multipartBody); // 正确方式:使用 MediaTypeHeaderValue 构造函数,分别传入媒体类型和参数 var contentType = new MediaTypeHeaderValue("multipart/form-data"); contentType.Parameters.Add(new NameValueHeaderValue("boundary", boundary)); byteContent.Headers.ContentType = contentType; // 4. 发送请求 HttpResponseMessage response = await httpClient.PostAsync(apiUrl, byteContent); string responseBody = await response.Content.ReadAsStringAsync(); // 4. 处理响应 if (response.IsSuccessStatusCode) { _Result = new() { Error = 0, Message = $"获取机器编号成功!", Data = responseBody }; } else { _Result = new() { Error = 11, Message = $"调用失败,状态码: {response.StatusCode}", Data = responseBody }; } } } catch (Exception ex) { _Result = new() { Error = -1, Message = "错误见信息!", Data =ex.ToString() }; } ExitProgram: //return JsonSerializer.Serialize(_Result); // return $"{{\"Error\":{_Result.Error},\"Message\":\"{_Result.Message}\",\"Data\":\"{_Result.Data}\"}}"; // return Ok(_Result); // var response = new { Success = true, Data = "" }; return Ok(_Result); } private byte[] BuildMultipartBody(byte[] fileData, string fileName, string contentType, string boundary) { using var stream = new MemoryStream(); var encoding = Encoding.UTF8; // 第一部分:文件部分头部 string header = $"--{boundary}\r\n" + $"Content-Disposition: form-data; name=\"img\"; filename=\"{fileName}\"\r\n" + $"Content-Type: {contentType}\r\n\r\n"; byte[] headerBytes = encoding.GetBytes(header); stream.Write(headerBytes, 0, headerBytes.Length); // 文件内容 stream.Write(fileData, 0, fileData.Length); // 结束 boundary string footer = $"\r\n--{boundary}--\r\n"; byte[] footerBytes = encoding.GetBytes(footer); stream.Write(footerBytes, 0, footerBytes.Length); return stream.ToArray(); } 试试这个代码{"errcode":41005,"errmsg":"media data missing hint: [euKmIA0205w972] rid: 648cfc34-1302fb5b-5633b4eb"}