Olias
Olias

Reputation: 17

Connect to json-rpc interface

I'm trying to connect to the transmission rpc interface via C#/Java to get some informations back. https://trac.transmissionbt.com/browser/trunk/extras/rpc-spec.txt Unfortunatly I have problems to get the correct HTTP-Post to access the interface. For example if I try this in 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);
    }

Or if i use:

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);
        }

I get the following error:

An unhandled exception of type 'System.Net.WebException' occurred in System.dll Additional information: The Remoteserver returned an exception: (409) conflict.

Upvotes: 0

Views: 977

Answers (1)

kumako
kumako

Reputation: 36

You must save the X-Transmission-Session-Id provided in the 409 response and resubmit the request with a X-Transmission-Session-Id property added to your request header.

Example in java :

int index = responseString.indexOf("X-Transmission-Session-Id:");
String sessionId = responseString.substring(index + 27, index + 75);
connection.setRequestProperty("X-Transmission-Session-Id", sessionId);

Upvotes: 1

Related Questions