HttpURLConnection GET-запрос на получение 400 неверных запросов - PullRequest
3 голосов
/ 14 июня 2011

Я пытаюсь выполнить запрос GET с некоторыми параметрами в Java, используя HttpURLConnection.Однако каждый раз, когда я делаю это, я каждый раз получаю запрос 400: Bad.Что мне нужно изменить, чтобы заставить его работать?

String url = "http://www.awebsite.com/apath?p1=v1&p2=v2&p3=v3";
HttpURLConnection conn = (HttpURLConnection)new URL(url).openConnection();
conn.setDoInput(true);
conn.setDoOutput(false);
conn.setUseCaches(false);
conn.setRequestMethod("GET");
conn.setRequestProperty("Host", "www.awebsite.com");
conn.setRequestProperty("User-Agent", "Mozilla/4.0");
conn.setRequestProperty("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
conn.setRequestProperty("Accept-Language", "en-us,en;q=0.5");
conn.setRequestProperty("Accept-Charset", "ISO-8859-1,utf-8;q=0.7,*;q=0.7");
conn.setRequestProperty("Keep-Alive", "115");
conn.setRequestProperty("Connection", "keep-alive");
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
StringBuilder data = new StringBuilder();
String s = "";
while((s = br.readLine()) != null)
    data.append(s);
String pageData = data.toString();

Я пробовал:

  • Использование URLEncoder для всего запроса (после?) И только для значений.
  • Настройка заголовка длины содержимого.
  • Настройка подключения для использования вывода и помещение запроса в качестве вывода.

Ответы [ 2 ]

2 голосов
/ 17 августа 2012

Похоже, что в этом случае HTTP 400 используется не для обозначения ошибки в синтаксисе запроса, а для логической ошибки, как описано здесь: HTTP 400 (неверный запрос) для логической ошибки, а не синтаксического синтаксиса запроса .

2 голосов
/ 14 июня 2011

Код пытается открыть соединение с www.awebsite.com, но также отправляет недопустимые / недопустимые значения для поля Host: www.google.com. Это определенно не разрешено спецификацией HTTP.

Вы должны исправить это, чтобы сервер на www.awebsite.com получил правильный набор заголовков, чтобы он мог обработать ваш запрос.

Обязательная ссылка : Как использовать java.net.URLConnection для запуска и обработки HTTP-запросов?

...