0

いくつかの情報を取得するために、C#/Java 経由で送信 rpc インターフェイスに接続しようとしています。 https://trac.transmissionbt.com/browser/trunk/extras/rpc-spec.txt 残念ながら、インターフェイスにアクセスするための正しい HTTP-Post を取得するのに問題があります。たとえば、C# でこれを試してみると、次のようになります。

    using (var client = new WebClient())
    {
        var values = new NameValueCollection();
        values["torrent-get"] = "id";

        var response = client.UploadValues("http://ip:9091/transmission/rpc", values);

        var responseString = Encoding.Default.GetString(response);
        Console.WriteLine("" + responseString);
    }

または私が使用する場合:

using (var webClient = new WebClient())
        {
            String json = "{\"arguments\": {\"fields\": [ \"id\", \"name\", \"totalSize\" ],\"ids\": [ 7, 10 ]},\"method\": \"torrent-get\",\"tag\": 39693}";
            var response = webClient.UploadString("http://192.168.240.171:9091/transmission/rpc", "POST", json);
            Console.WriteLine(""+response);
        }

次のエラーが表示されます。

タイプ 'System.Net.WebException' の未処理の例外が System.dll で発生しました 追加情報: リモート サーバーが例外を返しました: (409) 競合。

4

1 に答える 1

1

409 応答で提供されたX-Transmission-Session-Id を保存し、要求ヘッダーにX-Transmission-Session-Idプロパティを追加して要求を再送信する必要があります。

Java での例:

int index = responseString.indexOf("X-Transmission-Session-Id:");
String sessionId = responseString.substring(index + 27, index + 75);
connection.setRequestProperty("X-Transmission-Session-Id", sessionId);
于 2014-11-04T12:40:49.027 に答える