Я получаю неверный многочастный POST, когда пытаюсь отправить данные на удаленный API с помощью С# httpclientC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Я получаю неверный многочастный POST, когда пытаюсь отправить данные на удаленный API с помощью С# httpclient

Сообщение Anonymous »

Прежде всего, я плохо говорю по-английски, извините за ошибки, я сделаю все возможное.
Я пытаюсь создать веб-сайт с помощью C# и asp.net core 8. Мне нужно отправить данные на удаленный компьютер API для загрузки моих видео. (API Дудстрим). Когда я пытаюсь опубликовать свои данные в API с помощью Postman, BurpSuite или простой HTML-формы, он возвращает 200 успехов, и мои видео просматриваются на панели управления. Но когда я пытаюсь загрузить свои видео с помощью asp.net httpClient, я получаю неверную многочастную ошибку POST или ошибку Http 500. Я пытаюсь решить проблему около недели, но не могу.
Функция загрузки.

Код: Выделить всё

 public async Task UploadDSAsync(string apiUrl, string apiKey, string filePath)
{

using (var request = new HttpRequestMessage(HttpMethod.Post, $"{apiUrl}?key={apiKey}"))
{
using (var form = new MultipartFormDataContent())
{
var ua = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36";
request.Headers.Add("User-Agent", ua);
var file = new ByteArrayContent(await File.ReadAllBytesAsync(filePath));
file.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("video/mp4");
file.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("form-data")
{
Name = "file",
FileName = Path.GetFileName(filePath)
};
form.Add(new StringContent(apiKey), name: "api_key");
form.Add(file, name: "file", Path.GetFileName(filePath));

request.Content = form;
var response = _httpClient.Send(request);
response.EnsureSuccessStatusCode();
return await response.Content.ReadAsStringAsync();

}
}
}

Код: Выделить всё

     [HttpPost]
[ValidateAntiForgeryToken]
[DisableRequestSizeLimit]
[Route("[controller]")]
[RequestFormLimits(ValueLengthLimit = int.MaxValue, MultipartBodyLengthLimit = int.MaxValue)]
public async Task Upload(IFormFile file)
{
var url = $"https://doodapi.com/api/upload/server?key={apiKey}";
var res = await _doodStreamService.GetUploadServerAsync(url);
//res equals the url value, doostream provide us different urls for post videos.

if (res == null)
{
return BadRequest(res);
}

if (file == null || file.Length == 0)
{
return BadRequest("Dosya seçilmedi.");
}

var filePath = Path.GetTempFileName().Replace(".tmp", ".mp4");
using (var stream = System.IO.File.Create(filePath))
{
await file.CopyToAsync(stream);
}

var result = await _doodStreamService.UploadDSAsync(res, apiKey, filePath);

// Geçici dosyayı silin
System.IO.File.Delete(filePath);

return Ok(result);
}
Я хочу показать вам успешный запрос HTTP Post.

Код: Выделить всё

POST /upload/01?key=mykey HTTP/1.1
Host: io274l.video-delivery.net
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:127.0) Gecko/20100101 Firefox/127.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: tr-TR,tr;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate, br
Content-Type: multipart/form-data; boundary=---------------------------329310205013466975143905415842
Content-Length: 2789881
Origin: http://127.0.0.1:5500
Referer: http://127.0.0.1:5500/
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: cross-site
Sec-Fetch-User: ?1
Priority: u=1
Te: trailers
Connection: keep-alive

-----------------------------329310205013466975143905415842
Content-Disposition: form-data; name="api_key"

182790a84ywqe32dp5y9ty
-----------------------------329310205013466975143905415842
Content-Disposition: form-data; name="file";  filename="aaa.mp4"
Content-Type: video/mp4

ftypmp42mp42isomavc1Ímoovxmvhdâ$â$X@Ätrakhtkhdâ$â$@8,edts$elst»(mdia,mdhdâ$â$]ÀÃØUÄ:hdlrvideVimeo Artax Video Handlerºminfvmhd$dinfdrefurl zstbl²stsd¢avc18HH
AVC Codingÿÿ9avcCd*ÿágd*¬Ùx'å  pã3@hé{,ýøøcolrnclxstts8é`cttsê»ÒÒÒÒÒÒÒ¤Òv»éÒÒÒÒÒÒÒ¤Òv»éÒÒÒÒÒÒÒ¤Ò»ÒÒÒÒÒÒÒv»éÒv»éÒv»éÒÒÒÒÒv»éÒ¤ÒÒÒÒÒÒÒ¤Ò»ÒÒÒÒÒÒÒ¤Òv»éÒÒÒÒÒÒÒv»éÒv»éÒv»éÒÒÒÒÒ¤Ò»ÒÒÒÒÒÒÒv»éÒv»éÒv»éÒÒÒÒÒ¤Òv»éÒÒÒÒÒÒÒ¤Ò¤é¤é¤é¤é¤é¤é¤é»é$stssIÙ!stscôstsz8õDE©Ç
3

MORE VİDEO BYTES
...
...

-----------------------------329310205013466975143905415842--

Он возвращает данные http 200 и json о загруженном видео.
И это другой мой запрос, который выполняет asp.net, но он возвращает http 500 и провалиться.

Код: Выделить всё

POST /upload/01?key=myapikey HTTP/1.1
Host: yu1073k.video-delivery.net
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36
traceparent: 00-612759c4039f28f75b3b845b2154898f-c618443035899a1d-00
Content-Type: multipart/form-data; boundary="a0cc5a75-c0d5-4328-8007-6abab10c2ee5"
Content-Length: 2789859
Connection: keep-alive

--a0cc5a75-c0d5-4328-8007-6abab10c2ee5
Content-Type: text/plain; charset=utf-8
Content-Disposition: form-data; name=api_key

182790a84ywqe32dp5y9ty
--a0cc5a75-c0d5-4328-8007-6abab10c2ee5
Content-Type: video/mp4
Content-Disposition: form-data; name=file; filename=tmputfimX.mp4

ftypmp42mp42isomavc1Ímoovxmvhdâ$â$X@Ätrakhtkhdâ$â$@8,edts$elst»(mdia,mdhdâ$â$]ÀÃØUÄ:hdlrvideVimeo Artax Video Handlerºminfvmhd$dinfdrefurl zstbl²stsd¢avc18HH
AVC Codingÿÿ9avcCd*ÿágd*¬Ùx'å  pã3@hé{,ýøøcolrnclxstts8é`cttsê»ÒÒÒÒÒÒÒ¤Òv»éÒÒÒÒÒÒÒ¤Òv»éÒÒÒÒÒÒÒ¤Ò»ÒÒÒÒÒÒÒv»éÒv»éÒv»éÒÒÒÒÒv»éÒ¤ÒÒÒÒÒÒÒ¤Ò»ÒÒÒÒÒÒÒ¤Òv»éÒÒÒÒÒÒÒv»éÒv»éÒv»éÒÒÒÒÒ¤Ò»ÒÒÒÒÒÒÒv»éÒv»éÒv»éÒÒÒÒÒ¤Òv»éÒÒÒÒÒÒÒ¤Ò¤é¤é¤é¤é¤é¤é¤é»é$stssIÙ!stscôstsz8õDE©Ç
3!À}â`>ö´À$ÏDò ßþ!KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK¿BMORE BYTES
...

--a0cc5a75-c0d5-4328-8007-6abab10c2ee5--

Кстати, в обоих http-запросах байты видео верны, проблема не в этом.
Документация по локальной загрузке Doodstream api< /p>
Я пробовал несколько раз с помощью burpsuite и почтальона, он возвращает http 200.
Я хочу загрузить его с помощью функции UploadDSAsync.>

Подробнее здесь: https://stackoverflow.com/questions/786 ... i-with-c-s
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Я получаю неверный многочастный POST, когда пытаюсь отправить данные в удаленный API с помощью C# HttpClient.
    Anonymous » » в форуме C#
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous
  • Сравните многочастный/смешанный и многочастный/альтернативный
    Anonymous » » в форуме JAVA
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Spring Data Rest: как отправить многочастный файл с телом запроса
    Anonymous » » в форуме JAVA
    0 Ответы
    25 Просмотры
    Последнее сообщение Anonymous
  • Spring Data Rest: как отправить многочастный файл с телом запроса
    Anonymous » » в форуме JAVA
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Как отправить многочастные данные POST с помощью Xamarin HttpClient C#?
    Anonymous » » в форуме C#
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»