Возможно ли передать параметры с помощью запроса HTTP
? Если да, то как мне это сделать? Я нашел сообщение HTTP
requst (link). В этом примере строка postData
отправляется на веб-сервер. Я хотел бы сделать то же самое, используя вместо. Google нашел этот пример на HTTP
и получил here. Однако никакие параметры не отправляются на веб-сервер.Как получить запрос HTTP-запроса с параметрами
ответ
В запросе 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.
Чтобы использовать эту функцию, вам просто нужно создать два NameValueCollections, содержащих ваши параметры и заголовки запросов.
Рассмотрим следующую функцию:
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;
}
Добавить свои параметры строки запроса (при необходимости) в виде NameValueCollection как так.
NameValueCollection QueryStringParameters = new NameValueCollection();
QueryStringParameters.Add("id", "123");
QueryStringParameters.Add("category", "A");
Добавьте свои http заголовки (если требуется) в качестве имениValueCollection, как это.
NameValueCollection RequestHttpHeaders = new NameValueCollection();
RequestHttpHeaders.Add("Authorization", "Basic bGF3c2912XBANzg5ITppc2ltCzEF");
Вы также можете передать стоимость непосредственно по URL-адресу.
Если вы хотите, чтобы вызвать метод public static void calling(string name){....}
то следует вызвать с помощью HttpWebRequest webrequest = (HttpWebRequest)WebRequest.Create("http://localhost:****/Report/calling?name=Priya); webrequest.Method = "GET"; webrequest.ContentType = "application/text";
Просто убедитесь, что вы используете ?Object = value
в URL
Если ввести полный URL, включая параметры в Адресс bar iexplore, я получаю тот же ответ, что и запрос http, полученный от C# – CruelIO
Это должно быть так. – EndangeredMassa
Это не код C# ... – psyklopz