我试图通过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中 附加信息:Remoteserver返回了一个异常:(409)冲突。
答案 0 :(得分: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);