Сервер возвращает «Невозможно подключиться к удаленному серверу», когда параметры строки запроса отправляются в теле в виде байта - PullRequest
0 голосов
/ 11 сентября 2018

У меня есть код ниже, чтобы сделать 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 и записью в поток? И является ли первый подход безопасным или более надежным, или между ними нет абсолютно никакой разницы?

Ответы [ 2 ]

0 голосов
/ 11 сентября 2018

Ну, это зависит от того, что серверная сторона ожидает для этого API.Тот факт, что API правильно отвечает на вызов

string url = "https://www.mywebsite.com?Param1=Value1&Param2=Value2&Param3=Value3";
string body = "";

, указывает на то, что, вероятно, ожидает вызов GET, а не POST.

0 голосов
/ 11 сентября 2018

Попробуйте поставить "?"символ в строке URL, непосредственно перед строкой параметров.

string url = "https://www.mywebsite.com?Param1=Value1&Param2=Value2&Param3=Value3";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...