代码之家  ›  专栏  ›  技术社区  ›  pixmurat

我想用Synology FileStation API将txt文件上传到NAS设备,但出现了错误。你能帮我吗?

  •  0
  • pixmurat  · 技术社区  · 3 年前

    我想通过FileStation API将txt文件发送到NAS设备,我正在用C#编写代码。当我在邮递员中发布请求时,请求成功并上传了文件。但在C#中,我使用RestSharp框架发布请求。但在某些情况下,我会得到错误101或401。在下面,我发送我的代码。谢谢你的回复。

    var client = new RestClient(url);
    var request = new RestRequest("/webapi/entry.cgi", Method.Post);
    request.AddHeader("Cookie", "did="+_did+"; id="+_sid);
    request.AddParameter("api", "SYNO.FileStation.Upload", ParameterType.RequestBody);
    request.AddParameter("version", "3", ParameterType.RequestBody);
    request.AddParameter("method", "upload", ParameterType.RequestBody);
    request.AddParameter("path", "my_path", ParameterType.RequestBody);
    request.AddParameter("create_parents", "False", ParameterType.RequestBody);
    request.AddFile("filename", filename, "application/octet-stream");
    var response = client.ExecutePostAsync(request).Result;
    
    0 回复  |  直到 3 年前
        1
  •  0
  •   Daniel Lorenz    3 年前

    最后一行代码就是错误所在。因为这是一个异步调用,所以您必须等待它。然而,这意味着该代码所在的方法需要标记为async。您没有显示该代码,因此不确定这是否在主方法中。但最终,它应该是这样的:

    public static async Task Main(params object[] parameters)
    {
        var client = new RestClient(url);
        var request = new RestRequest("/webapi/entry.cgi", Method.Post);
        request.AddHeader("Cookie", "did="+_did+"; id="+_sid);
        request.AddParameter("api", "SYNO.FileStation.Upload", ParameterType.RequestBody);
        request.AddParameter("version", "3", ParameterType.RequestBody);
        request.AddParameter("method", "upload", ParameterType.RequestBody);
        request.AddParameter("path", "my_path", ParameterType.RequestBody);
        request.AddParameter("create_parents", "False", ParameterType.RequestBody);
        request.AddFile("filename", filename, "application/octet-stream");
        var response = await client.ExecutePostAsync(request);
    }
    
        2
  •  0
  •   YL W    3 年前

    我也遇到了同样的问题,使用Java,服务器返回101。如果有解决办法,请告诉我。非常感谢。

    推荐文章