别低头 王冠会掉 2023-09-05 10:18 采纳率: 33.3%
浏览 13
已结题

关于Aria2调用的问题 传递参数

现在调用Aria2 已经可以实现下载了 也可以返回 下载速度 进度 剩余时间 这些

我想在下载途中给a2 传递一个限速的命令参数 下面是代码
可以是怎么都不可以 哪里不对啊 帮帮我吧

            var tool = Application.StartupPath + "\\Download\\aria2c.exe";
            var command = " --max-overall-download-limit=1000K ";
            ProcessStartInfo psi = new ProcessStartInfo();
            psi.FileName = tool;
            psi.Arguments = command;
            psi.UseShellExecute = false;
            psi.CreateNoWindow = true;
            Process.Start(psi);

  • 写回答

3条回答 默认 最新

  • 丨Haruna 2023-09-05 15:57
    关注

    如果你希望在Aria2已经启动的情况下向其传递限制下载速度的命令,你可以使用 Aria2 的 JSON-RPC 接口。首先,确保 Aria2 正在运行,并且已经启用了 JSON-RPC 接口。

    下面的示例代码参考了GPT。

    using System;
    using System.Net.Http;
    using System.Text;
    using System.Threading.Tasks;
    
    class Program
    {
        static async Task Main()
        {
            // Aria2 JSON-RPC 接口地址
            string aria2JsonRpcUrl = "http://localhost:6800/jsonrpc"; // 替换为实际的 JSON-RPC 地址
    
            // 构建 JSON-RPC 请求
            string jsonRequest = "{\"jsonrpc\":\"2.0\",\"id\":\"1\",\"method\":\"aria2.changeGlobalOption\",\"params\":[\"token:YOUR_SECRET_TOKEN\",{\"max-overall-download-limit\":\"1000K\"}]}";
    
            // 发送 JSON-RPC 请求
            using (var client = new HttpClient())
            {
                var content = new StringContent(jsonRequest, Encoding.UTF8, "application/json");
                var response = await client.PostAsync(aria2JsonRpcUrl, content);
    
                if (response.IsSuccessStatusCode)
                {
                    Console.WriteLine("成功向 Aria2 发送限速命令。");
                }
                else
                {
                    Console.WriteLine($"向 Aria2 发送限速命令时发生错误:{response.StatusCode}");
                }
            }
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 9月13日
  • 已采纳回答 9月5日
  • 修改了问题 9月5日
  • 创建了问题 9月5日