1

我有一个像 "https://landfill.bugzilla.org/bugzilla-tip/jsonrpc.cgi?method=Product.get¶ms=[{"ids":"4"}]" 这样的 json 网址

我想在 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 序列化程序,然后您就可以参加比赛了。

获取请求只是一个 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 类或如何在 C# 中为 URL 构建查询字符串中的方法?

如果您需要构造更复杂的参数(如 ID 数组) - 使用 jbehren 建议进行 JSON 序列化。

于 2012-12-13T06:56:20.120 回答