У меня есть код ниже, чтобы сделать POST и получить ответ:
string url = // Url. Example= "https://www.mywebsite.com"
string body = // querystring values I would like to pass as parameter. Example= "Param1=Value1&Param2=Value2&Param3=Value3"
byte[] byteBody = Encoding.GetEncoding("iso-8859-1").GetBytes(body);
httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
httpWebRequest.Method = "POST";
httpWebRequest.KeepAlive = false;
httpWebRequest.ContentLength = byteBody.Length;
Stream requestStream = httpWebRequest.GetRequestStream();
requestStream.Write(byteBody, 0, byteBody.Length);
requestStream.Flush();
(HttpWebResponse)httpWebRequest.GetResponse();
Когда я устанавливаю параметры URL и тела, как показано ниже, этот код без проблем работает для очень многих URL.
string url = "https://www.mywebsite.com";
string body = "Param1=Value1&Param2=Value2&Param3=Value3";
Но есть один URL, которого нет. Когда я устанавливаю параметры, как указано выше, возвращается «Невозможно подключиться к удаленному серверу».
Но, когда я устанавливаю параметры, как показано ниже, это работает:
string url = "https://www.mywebsite.com?Param1=Value1&Param2=Value2&Param3=Value3";
string body = "";
В чем причина? В чем разница между отправкой параметров в Querystring URL и записью в поток?
И является ли первый подход безопасным или более надежным, или между ними нет абсолютно никакой разницы?