Почему я получаю эту ошибку HTTP/1.1 500 Внутренняя ошибка сервера?

#c# #unity3d #post #unitywebrequest

#c# #unity3d #Публикация #unitywebrequest

Вопрос:

В настоящее время я пытаюсь сделать запрос на публикацию в Unity, где я загружаю аудио.файл wav. Проблема в том, что когда я запускаю код, он показывает мне ошибку из заголовка, и я не знаю, в чем проблема. Мне кажется, что я все настроил правильно, но это все равно не работает.

Вот мой почтовый запрос:

 void Start() {  Debug.Log("POST REQUEST START");  StartCoroutine(PostRequest()); }   IEnumerator PostRequest() {  var url = "http://localhost/api/speech";  string dirPath = Path.Combine(Application.persistentDataPath, "myfile.wav");   byte[] postData = File.ReadAllBytes(dirPath);   Listlt;IMultipartFormSectiongt; formData = new Listlt;IMultipartFormSectiongt;();  formData.Add(new MultipartFormFileSection("fileUpload", postData, "myfile.wav", "application/octet-stream"));  UnityWebRequest www = UnityWebRequest.Post(url, formData);   yield return www.SendWebRequest();   if (www.isNetworkError || www.isHttpError)  {  Debug.Log(www.error);  }  else  {  Debug.Log("Form upload complete! "   www.downloadHandler.text);   } }  

Вот мое рабочее решение для почтальона: Почтальон

Вот код запроса на публикацию API:

 [HttpGet]  public JsonResult getText()  {  byte[] bytes = System.IO.File.ReadAllBytes("Files/javascript_audio_sample.wav");  RecognitionAudio audio = RecognitionAudio.FromBytes(bytes);   return new JsonResult(transcribe(audio));  }   [HttpPost]  public Listlt;stringgt; postFile()  {  Listlt;stringgt; results = new Listlt;stringgt;();  if (Request.HasFormContentType)  {  var form = Request.Form;  foreach (var formFile in form.Files)  {  if (formFile.Length gt; 0)  {  var stream = formFile.OpenReadStream();  RecognitionAudio audio = RecognitionAudio.FromStream(stream);  results.Add(transcribe(audio));  }  }  }   return results;  }  

Комментарии:

1. Вам нужно заглянуть в код сервера (что бы ни обслуживало эту конечную точку «/api/речь»), чтобы выяснить, почему. Может ли файл, который вы загружаете, быть поврежден?

2. @tromgy Файл хорош, потому что я попробовал его с Почтальоном, и это сработало.

3. Очевидно 500 Internal Server Error , что что-то происходит за пределами вашего c# кода, а скорее на стороне сервера / API. Если это работает с помощью почтальона, но не через вас UnityWebRequest , убедитесь, что все параметры и т.д. Закодированы / используются точно так же … это помогло бы увидеть ваше рабочее решение для почтальона, чтобы мы могли просмотреть и сравнить то, что вы делаете c# .. Хотя еще лучше, вероятно, было бы иметь сам код на стороне сервера

4. @derHugo Эй, спасибо за ваши отзывы. Я только что добавил скриншот своего решения Почтальона. Мы очень ценим вашу помощь.

5. Используйте отладчик HTTP, такой как Fiddler, чтобы устранить разницу между тем, что делают Postman и Unity.