Отправить HTTP GET заголовки в Java - PullRequest
0 голосов
/ 23 марта 2011

Мне интересно, можно ли отправлять заголовки HTTP GET с помощью Java.

В основном я работаю над Java-программой, которая взаимодействует с REST-подобным веб-сервисом. Чтобы имитировать это, я создал небольшой php-файл, который просто выводит все переменные в $_GET, так что я могу видеть, правильно ли переданы мои переменные заголовка GET.

В php вы можете 'отправлять' переменные получения, используя синтаксис ?key=value, однако я не уверен, работает ли это для каждой веб-платформы. Поэтому я подумал об отправке этих пар (ключ, значение) в заголовок HTTP GET (если это невозможно или неправильный способ сделать это, не стесняйтесь указывать на это!).

У меня есть следующий код, но ответ от сервера не отображает ни одну из переменных GET, которые я отправляю:

 public static void Request(String address, Vector<RequestProperty> props){
        URL url = null;
        BufferedReader reader = null;
        StringBuilder stringBuilder;
        try{
            url = new URL(address);
            HttpURLConnection connection = (HttpURLConnection)url.openConnection();
            connection.setRequestMethod("GET");
            connection.setDoOutput(true);

            //Add request headers
            for(RequestProperty prop : props){
                //Here I add the pairs like MyKey = MyValue
                connection.addRequestProperty(prop.key,  prop.value);
            }

            connection.setReadTimeout(15000);
            connection.connect();

            reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));

            String line = null;
            while((line = reader.readLine()) != null){
                System.out.println(line);
            }
        }
        catch(Exception ex){
            ex.printStackTrace();
        }        

Ответы [ 2 ]

2 голосов
/ 23 марта 2011

Параметры запроса GET содержатся в URL-адресе (то есть с использованием синтаксиса ?key=value).

Вы могли бы поместить другую информацию в заголовки, но она не будет интерпретироваться как совпадающая с аргументами (то есть вам нужно интерпретировать ее по-другому на стороне сервера), и это редко делается для общих целей. аргументы.

1 голос
/ 23 марта 2011

Я думаю, что вы можете несколько запутаться. В PHP $_GET обеспечивает доступ к GET параметрам , а не HTTP заголовкам . Но отправить параметр GET легко, просто следуйте тому же синтаксису ?key=value, к которому вы привыкли в PHP. Он работает так же хорошо в Java (или где-либо еще, если на то пошло).

Заголовки - это совсем другое, и они обрабатываются одинаково, независимо от того, отправляются ли параметры запроса с помощью GET или POST. Для большинства приложений вам не нужно устанавливать или получать какие-либо пользовательские значения заголовка HTTP.

...