@xsss1
web разработчик

Как отключить encode в WebClient UploadValues?

using (var wb = new WebClient())
{

	wb.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
	var response = wb.UploadValues(url, "POST", data);
	responseInString = Encoding.UTF8.GetString(response);
}


Например запрос: http://site.com/index.php?199|&param=1
Запрос отправляется site.com/index.php?199%7C&param=1
Но чужой сервер не понимает 199%7C только 199|

Каким образом через WebClient отправить запрос с символом |.

Когда я делаю curlом на php запрос, если мне нужно encode, я делаю это вручную. Каким образом мне здесь отключить encode?
  • Вопрос задан
  • 167 просмотров
Решения вопроса 1
Если параметр в Url, то можно сделать экземпляр Uri и отключить кодирование:
var url = new Uri("http://site.com/index.php?199|&param=1", true);
// ...
var response = wb.UploadValues(url, "POST", data);

Без кодирования параметров с помощью HttpClient
using (var client = new HttpClient())
{
  var url = new Uri("http://site.com/index.php?199|&param=1", true);
  var data = new StringBuilder();
  data.AppendLine("abc=199|");

  using (var content = new StringContent(data.ToString(), Encoding.UTF8, "application/x-www-form-urlencoded"))
  {
    using (var request = new HttpRequestMessage(HttpMethod.Post, url))
    {
      request.Content = content;

      using (var response = client.SendAsync(request).Result)
      {
        response.EnsureSuccessStatusCode();

        // var result = await response.Content.ReadAsStringAsync();
        var result = response.Content.ReadAsStringAsync().Result;
      }
    }
  }
}

Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы