Kri*_*aig 7 .net c# rest http restsharp
好的,这是自从我将 RestSharp 更新到当前版本后出现问题的 C# 代码:
restRequest.Files.Add((FileParameter)file); // Added cast for clarity
Run Code Online (Sandbox Code Playgroud)
根据当前的官方文档,这是正确的选择:
restRequest.AddFile((FileParameter)file);
Run Code Online (Sandbox Code Playgroud)
然而,这似乎是不正确的,因为它抛出了这个异常:
方法“AddFile”没有重载需要 1 个参数
这直接与 RestSharp 文档相矛盾。我一直无法找到任何方法来解决这个问题。我尝试了那里的重载,但 FileParameter 不再包含所需的 Writer 属性,并且我找不到任何提及该属性移动到何处的文档。
我缺少什么?
restRequest.Files是只读集合,因此您不能使用该属性来添加更多文件。
restRequest.AddFile((FileParameter)file);由于新版本的 Restsharp 中不存在重载,因此您可以像这样定义自己的扩展方法:
using RestSharp;
public static class RestRequestExtensions
{
public static RestRequest AddFile(this RestRequest req, FileParameter f)
{
return req.AddFile(f.Name, GetBytes(f.GetFile()), f.FileName, f.ContentType);
}
private static byte[] GetBytes(Stream input)
{
byte[] buffer = new byte[16 * 1024];
using (MemoryStream ms = new MemoryStream())
{
int read;
while ((read = input.Read(buffer, 0, buffer.Length)) > 0)
{
ms.Write(buffer, 0, read);
}
return ms.ToArray();
}
}
}
Run Code Online (Sandbox Code Playgroud)
其他方式:
public static class RestRequestExtensions
{
public static RestRequest AddFile(this RestRequest req, FileParameter f)
{
return req.AddFile(f.Name, ()=>f.GetFile(), f.FileName, f.ContentType);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1734 次 |
| 最近记录: |