Restsharp: RestRequest.AddFile no funciona

Creado en 1 nov. 2010  ·  13Comentarios  ·  Fuente: restsharp/RestSharp

Parece que agregar un archivo a RestRequest no funciona.

ResponseStatus se establece como Error.

La respuesta. El mensaje de error es "Los bytes que se escribirán en la secuencia superan el tamaño de bytes de longitud de contenido especificado".

tiene que actualizar la longitud del contenido antes de escribir en la transmisión.

bug

Comentario más útil

Esta fue mi solución para solucionar este error:

var req = GetRestRequest("Upload", Method.POST, null);
//req.AddFile("file",
//    (s) => {
//        var stream = input(imageObject);
//        stream.CopyTo(s);
//        stream.Dispose();
//    },
//    fileName, contentType);

req.Files.Add(new FileParameter {
    Name = "file",
    Writer = (s) => {
        var stream = input(imageObject);
        stream.CopyTo(s);
        stream.Dispose();
    },
    FileName = fileName,
    ContentType = contentType,
    ContentLength = contentLength
});   

Todos 13 comentarios

lo más probable es que los cambios en Content-Length para trabajar con .NET no se hayan probado con archivos y el encabezado no se haya configurado correctamente. gracias por el informe.

intente esto de nuevo con los últimos cambios de jonfuller y dígame si todavía no funciona

Creo que esto se resolverá. por favor pruebe y notifique si no.

El problema volvió.
En la versión 105.2.3 (actual estable en nuget) con un archivo de ~ 3,5 MB de tamaño.

Después de degradar a 105.1.0, todo funciona bien.

Hay una publicación similar

Creo que esto está relacionado con otro error # 769 y # 742, déjame arreglarlo y veremos qué sucede. Algo pasó con la longitud del contenido.

¿Hay alguna noticia sobre esto?

golpe - parece ser todavía un problema

sí, también tengo problemas con esto, incluso volver a 105.1.0 no ha ayudado

Aún no resuelto.

Tengo un problema similar con las versiones más recientes de restsharp
cuando usas
req.AddFile ("llamar [atributos_imagen] [archivo]", (s) => imageStream.CopyTo (s), GetRandomFileName ("jpg"), "imagen / jpeg");

No funciona en versiones más nuevas.

pero si uso
req.AddFile ("llamar [atributos_imagen] [archivo]", imageStream.GetBytes (), GetRandomFileName ("jpg"), "imagen / jpeg");

con

    public static byte[] GetBytes(this Stream s)
    {
        using (var ms = new MemoryStream())
        {
            s.CopyTo(ms);
            return ms.ToArray();
        }
    }

funciona.

por lo que el uso de una secuencia mediante imageStream.CopyTo no funciona mientras que el envío de bytes [] funciona

Esta fue mi solución para solucionar este error:

var req = GetRestRequest("Upload", Method.POST, null);
//req.AddFile("file",
//    (s) => {
//        var stream = input(imageObject);
//        stream.CopyTo(s);
//        stream.Dispose();
//    },
//    fileName, contentType);

req.Files.Add(new FileParameter {
    Name = "file",
    Writer = (s) => {
        var stream = input(imageObject);
        stream.CopyTo(s);
        stream.Dispose();
    },
    FileName = fileName,
    ContentType = contentType,
    ContentLength = contentLength
});   

¿RestRequest.AddFile no está listo para .NET Core? Veo que hay una directiva de compilador #if FRAMEWORK alrededor de los métodos AddFile en la interfaz. Creo que la solución alternativa de @bcabrera podría funcionar para mi caso de uso, pero la prueba unitaria sería un desafío.

Todavía no hay una versión para .NET Core. Vea los problemas abiertos para monitorear el progreso.

¿Fue útil esta página
0 / 5 - 0 calificaciones