我有一个json URl,如“https://landfill.bugzilla.org/bugzilla-tip/jsonrpc.cgi?method=Product.get¶ms=[{"ids":"4"}]"
我想在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”作为参数,请帮忙。
答案 0 :(得分:2)
困难的方法是手动创建一个字符串。更好的方法是使用像JSON.Net(Newtonsoft.Json)这样的库...创建你的对象,在那个lib中使用JSON Serializer,你就可以参加比赛了。
get请求只是一个URL,它是一个字符串。
答案 1 :(得分:2)
如果你知道Url的样子,并确定该参数是Url-safe(如int
),你只需使用String.Format来构造它:
int id = 4;
var url = String.Format("https://landfill.bugzilla.org/bugzilla-tip/"
+ "jsonrpc.cgi?method=Product.get¶ms=[{{\"ids\":\"{0}\"}}]", id);
请注意,这不是构建Url的好方法 - 它只适用于一次性使用代码,并且当您知道插入的参数是Url-safe时。适当的方法是使用Uri类或来自How to build a query string for a URL in C#?
的方法如果你需要构造更复杂的参数(比如ID数组) - 使用jbehren建议进行JSON序列化。