2012-12-13 43 views
1

我有一個json URL,如「https://landfill.bugzilla.org/bugzilla-tip/jsonrpc.cgi?method=Product.get & params = [{」ids「: 「4」}]「如何在Json中傳遞參數獲取請求

我想通過這個在c#程序中的URL。下面是代碼片段。我如何通過類似ID的參數如上?

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

不知道你的問題是什麼 - 你有問題中的網址示例,並使用其他網址發送請求...只需使用你需要的一個...或者你問別的東西(如「如何正確構建我的參數,如果我有'int id = 4':「)? –

+0

是的,我想要建立參數,問題是我無法傳遞上面給出的整個URL,所以我需要單獨傳遞參數。 – user1899731

回答

1

如果你知道地址的模樣,並確保這樣的說法是安全網址(如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); 

請注意,這不是contructing的好辦法網址 - 只有一次性使用的代碼纔可以,並且您知道插入的參數是網址安全的。正確的方法是使用Uri類或How to build a query string for a URL in C#?

如果您需要構建更復雜的參數(比如ID數組),請使用json序列化的jbehren建議。

+0

感謝它的作品:) – user1899731

2

困難的方法是手動創建一個字符串。更好的方法是使用像JSON.Net(Newtonsoft.Json)這樣的庫...創建您的對象,在該庫中使用JSON序列化程序,然後您就可以參加比賽了。

get請求只是一個URL,它是一個字符串。

+0

+1對構建JSON參數有很好的建議。 –

相關問題