2017-06-27 2 views
1

JSON-RPCを使用して、aria2というアプリケーションを制御したいと考えています。私はそれがparamsを必要としないときにそれを制御することができます。しかし、私は多くの方法を試みました、私はparamsでそれを制御することに成功しませんでした。C#のJSON-RPC 2.0で "params"を書くには?

私が試したコードの一部は、このようなものです:

if (secret != null && secret != "") 
    json = JsonConvert.SerializeObject(new JObject { ["jsonrpc"] = "2.0", ["id"] = "m", ["method"] = "aria2.addUri", ["params"] = { "token:" + secret, "[http://csharp.org/file.zip]" } }); 
else 
    json = JsonConvert.SerializeObject(new JObject { ["jsonrpc"] = "2.0", ["id"] = "m", ["method"] = "aria2.addUri", ["params"] = @"[http://csharp.org/file.zip]" }); 

私も試してみました:

if (secret != null && secret != "") 
    string json = "{\"jsonrpc\": \"2.0\",\"method\": \"aria2.addUri\",\"params\": {\"token:\"" + secret + "\",\"http://csharp.org/file.zip\"},\"id\": \"m\"}"; 
else 
    string json = "{\"jsonrpc\": \"2.0\",\"method\": \"aria2.addUri\",\"params\": {\"http://csharp.org/file.zip\"},\"id\": \"m\"}"; 

そして、私は[{'"で多くの組み合わせと順列を試してみましたが、何も動作。ここで

はPython用aria2に関するRPCのガイドです: https://aria2.github.io/manual/en/html/aria2c.html#rpc-authorization-secret-token

答えて

1

ここではいくつかの初心者が知りたいことが解決策です。

まず、この場合には、あなたが出力したいものを知っている:http://jsoneditoronline.org/?id=4ee8fb1e0314e124bd3ab7d4b2ed19f1


そして、少し先端、[]は次のとおりです。

{"jsonrpc":"2.0","id":"m","method":"aria2.addUri","params":["token:secret",["http://csharp.org/file.zip"]]} 

結果はこちらparamsの値の外側にあるので、配列であり、文字列ではありません。それは["params"] = {}を使用することはできません、それはまた、間違ったコード以下、例えば、配列に文字列をカバーしています:

JsonConvert.SerializeObject(new JObject { ["params"] = "[\"token:secret\", [\"http://csharp.org/file.zip\"]]" }); 

のみ取得:

{"params":"[\"token:secret\", [\"http://csharp.org/file.zip\"]]"} 

最も重要なのですトークンのフォーマットJProperty()JObject()で、それはパラメータの文字列である JArray()。また、uriもparamsのJArray()JArray()にあります。だから、 右のバージョンは次のとおりです。

JArray param = new JArray { "token:secret", new JArray { "http://csharp.org/file.zip" } }; 
string json = JsonConvert.SerializeObject(new JObject { ["jsonrpc"] = "2.0", ["id"] = "m", ["method"] = "aria2.addUri", ["params"] = param }); 
  • JArray()JObject(){}で、[]です。 JArray()JObject()

我々はJsonConvert()を必要としない場合は、右のバージョンは簡単です:

string json = "{ \"jsonrpc\": \"2.0\", \"id\": \"m\", \"method\": \"aria2.addUri\", \"params\": [\"token:secret\", [\"http://csharp.org/file.zip\"]] }"; 
  • 私たちは、この場合には'"を変更することはできません。
関連する問題