如何使 HTTP 获取请求与参数

是否可以通过 HTTP获取请求传递参数?如果是这样,那么我应该怎么做呢?我发现了一个 HTTP后请求(链接)。在这个例子中,字符串 postData被发送到一个 webserver。我想做同样的使用 走开代替。谷歌在 HTTP上发现了这个例子,得到了 给你。但是没有参数发送到 Web 服务器。

342249 次浏览

在 GET 请求中,将参数作为查询字符串的一部分传递。

string url = "http://somesite.com?var=12345";

第一个 WebClient更容易使用; GET 参数是在查询字符串上指定的——唯一的诀窍是记住转义任何值:

        string address = string.Format(
"http://foobar/somepage?arg1={0}&arg2={1}",
Uri.EscapeDataString("escape me"),
Uri.EscapeDataString("& me !!"));
string text;
using (WebClient client = new WebClient())
{
text = client.DownloadString(address);
}

我的首选方法是这样的,它为您处理转义和解析。

WebClient webClient = new WebClient();
webClient.QueryString.Add("param1", "value1");
webClient.QueryString.Add("param2", "value2");
string result = webClient.DownloadString("http://theurl.com");

WebRequest 对象似乎对我来说工作量太大了。我更喜欢使用 WebClient 控件。

要使用这个函数,您只需创建两个 NameValueCollectionshold 您的参数和请求头。

考虑以下函数:

    private static string DoGET(string URL,NameValueCollection QueryStringParameters = null, NameValueCollection RequestHeaders = null)
{
string ResponseText = null;
using (WebClient client = new WebClient())
{
try
{
if (RequestHeaders != null)
{
if (RequestHeaders.Count > 0)
{
foreach (string header in RequestHeaders.AllKeys)
client.Headers.Add(header, RequestHeaders[header]);
}
}
if (QueryStringParameters != null)
{
if (QueryStringParameters.Count > 0)
{
foreach (string parm in QueryStringParameters.AllKeys)
client.QueryString.Add(parm, QueryStringParameters[parm]);
}
}
byte[] ResponseBytes = client.DownloadData(URL);
ResponseText = Encoding.UTF8.GetString(ResponseBytes);
}
catch (WebException exception)
{
if (exception.Response != null)
{
var responseStream = exception.Response.GetResponseStream();


if (responseStream != null)
{
using (var reader = new StreamReader(responseStream))
{
Response.Write(reader.ReadToEnd());
}
}
}
}
}
return ResponseText;
}

添加您的 querystring 参数(如果需要)作为 NameValueCollection,如下所示。

        NameValueCollection QueryStringParameters = new NameValueCollection();
QueryStringParameters.Add("id", "123");
QueryStringParameters.Add("category", "A");

像这样添加您的 http 头(如果需要)作为 NameValueCollection。

        NameValueCollection RequestHttpHeaders = new NameValueCollection();
RequestHttpHeaders.Add("Authorization", "Basic bGF3c2912XBANzg5ITppc2ltCzEF");

您还可以直接通过 URL 传递值。

如果要调用 public static void calling(string name){....}

然后你应该使用 < code > HttpWebRequest 调用 WebRequest = (HttpWebRequest) WebRequest。创建(“ http://localhost:****/report/calling?name=priya”) ; 方法 = “ GET”; ContentType = “ application/text”;

只要确保在 URL 中使用 ?Object = value即可

具有多个参数的 GET 请求:

请求获取 Http://localhost:8080/todos/abc0头 ‘ content-type: application/json’