Restsharp: Многостраничная загрузка - неправильная длина контента

Созданный на 28 мар. 2017  ·  3Комментарии  ·  Источник: restsharp/RestSharp

Привет,

Я пытаюсь заставить многостраничную загрузку работать с v105.2.3, но, похоже, что-то не так с Content-Length.

using (FileStream source = File.Open(path, FileMode.Open))
{
    RestSharp.RestRequest request2 = new RestSharp.RestRequest();
    request.Resource = $"/files/uploads/{UploadId}";
    request.Method = Method.POST;
    request.AddFile(filename, source.CopyTo, filename);
    request.AlwaysMultipartFormData = true;

    IRestResponse<UploadResponse> response2 = this.Client.Execute<UploadResponse>(request);
    if ((int)response2.StatusCode != 201)
    {
        throw new Exception(response2.StatusDescription);
    }
}

В ответе 2 есть это сообщение об ошибке (оно на немецком языке и означает, что запрос был отменен):
_Die Anfrage wurde abgebrochen: Die Anfrage wurde abgebrochen .._

Внутреннее исключение (невозможно закрыть поток, пока не будут записаны все байты):
_Stream kann nicht geschlossen werden, bevor alle Bytes geschrieben wurden._

В Fiddler я получаю следующее:

Запрос - Сущность

Content-Length: 210
Content-Type: multipart/form-data; boundary=-----------------------------28947758029299

Ответ

HTTP/1.1 408 Request body incomplete
The request body did not contain the specified number of bytes. Got 159, expected 210

Мне нужно использовать пакет Nuget с этими версиями, поскольку у меня есть другие пакеты (например, RestSharp.Newtonsoft.Json), которым требуется эта версия.
Похоже, здесь та же проблема:
https://github.com/restsharp/RestSharp/issues/742

С наилучшими пожеланиями,
Алекс

Самый полезный комментарий

У меня была такая же проблема, и я решил ее, используя метод request.Files.Add () вместо AddFile () следующим образом:

                request.Files.Add(new FileParameter
                {
                    Name = "fileAttach",
                    Writer = (s) =>
                    {
                        FileStream stream = File.Open(_attachment.path, FileMode.Open);
                        stream.CopyTo(s);
                        stream.Dispose();
                    },
                    FileName = _attachment.name,
                    ContentType = _attachment.contentType,
                    ContentLength = _attachment.size
                });

Все 3 Комментарий

Привет, Алекс,

У меня такая же проблема. Вы решили это или работали над этим?

С наилучшими пожеланиями,
Морис

У меня была такая же проблема, и я решил ее, используя метод request.Files.Add () вместо AddFile () следующим образом:

                request.Files.Add(new FileParameter
                {
                    Name = "fileAttach",
                    Writer = (s) =>
                    {
                        FileStream stream = File.Open(_attachment.path, FileMode.Open);
                        stream.CopyTo(s);
                        stream.Dispose();
                    },
                    FileName = _attachment.name,
                    ContentType = _attachment.contentType,
                    ContentLength = _attachment.size
                });

Вы можете использовать AddFile но вам нужно указать длину содержимого, для этого есть параметр.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги