1

「https://landfill.bugzilla.org/bugzilla-tip/jsonrpc.cgi?method=Product.get¶ms=[{"ids":"4"}]」のようなjsonURlがあります

これをc#プログラムのURLとして渡したい。以下はコードスニペットです。上記のようにidsのような引数を渡すにはどうすればよいですか?

try
{
    string url="https://landfill.bugzilla.org/bugzilla-tip/jsonrpc.cgi?method=Product.get";
    string ret = string.Empty;
    StreamWriter requestWriter;
    var webRequest = System.Net.WebRequest.Create(url) as HttpWebRequest;
    if (webRequest != null)
    {
        webRequest.Method = "GET";
        webRequest.ServicePoint.Expect100Continue = false;
        webRequest.Timeout = 20000;

        webRequest.ContentType = "application/json";        
    }
    HttpWebResponse resp = (HttpWebResponse)webRequest.GetResponse();
    Stream resStream = resp.GetResponseStream();
    StreamReader reader = new StreamReader(resStream);
    ret = reader.ReadToEnd();
    return ret;
}
catch (WebException exception)
{
    string responseText;
    using (var reader = new StreamReader(exception.Response.GetResponseStream()))
    {
        responseText = reader.ReadToEnd();
    }
    return responseText;
}
}

引数として「ids」を渡す必要があります。助けてください。

4

2 に答える 2

2

難しい方法は、文字列を手動で作成することです。より良い方法は、JSON.Net (Newtonsoft.Json) のようなライブラリを使用することです...オブジェクトを作成し、そのライブラリで JSON シリアライザーを使用すると、レースに出かけることができます。

get リクエストは単なる URL であり、文字列です。

于 2012-12-13T06:35:06.417 に答える
1

Url がどのように見えるかを知っていて、引数が Url セーフ ( のようにint) であることを確認している場合は、単純に String.Format を使用してそれを構築できます。

 int id = 4;
 var url = String.Format("https://landfill.bugzilla.org/bugzilla-tip/"
       + "jsonrpc.cgi?method=Product.get&params=[{{\"ids\":\"{0}\"}}]", id);

これは Url を構築する良い方法ではないことに注意してください。一度だけ使用するコードで、挿入されたパラメーターが Url セーフであることがわかっている場合にのみ問題ありません。適切なアプローチは、Uri クラスまたはHow to build a query string for a URL in C#? のアプローチを使用することです。

より複雑なパラメーター (ID の配列など) を作成する必要がない場合は、JSON シリアル化に jbehren の提案を使用してください。

于 2012-12-13T06:56:20.120 に答える