HTTP-обработчик без ответа

1

Я пишу тестовый HTTPHandler и подключался к серверу, который я создал с помощью этого тестового кода.

public static void main( String[] args ) throws Exception {
        String param = URLEncoder.encode( "raghu", Constants.ENCODING_CHARSET );
        String uri = "http://127.0.0.1:" + Constants.PORT_NUMBER + "/test" + "?" + "welcome=" + param;
        URL url = new URL( uri );
        HttpURLConnection conn = ( HttpURLConnection ) url.openConnection();
        conn.setRequestMethod( "GET" );
        conn.setRequestProperty( "Accept", "application/xml" );
        conn.setDoOutput( true );
        conn.setReadTimeout( 5000 );


                InputStream responseCode = conn.getInputStream();
                System.out.println();
                String toString = convertInputStreamToString( responseCode );
                System.out.println( "response-->" + toString );

        conn.disconnect();
    }

    private static String convertInputStreamToString( InputStream inputStream ) throws IOException {
        StringBuffer out = new StringBuffer();
        byte[] b = new byte[4096];
        for ( int i; ( i = inputStream.read( b ) ) != -1; ) {
            out.append( new String( b, 0, i ) );
        }
        return out.toString();
    }

И мой код обработчика,

public class TestServiceAPI extends BaseServiceAPI {

    @Override
    public void handle( HttpExchange arg0 ) throws IOException {
        Map<String, Object> params = getParams( arg0 );
        System.out.println( "Inside test service---> " + params.get( "welcome" ) );
    }

}

Так что обязательно отправить ответ от обработчика? Мой код здесь останавливается на InputStream responseCode = conn.getInputStream(); так как это единственный способ, который я знаю, чтобы стрелять. Пожалуйста, дайте мне знать, если вы делаете это правильно или есть другой способ запустить запрос на сервер.

Благодарю.

Теги:
service
httphandler
httpserver

2 ответа

0

От взгляда на API, похоже, вы можете использовать connect() вместо открытия потока (протестируйте его, я этого не сделал).

Тем не менее - вы должны написать что-то в поток ответов, чтобы показать, что запрос был выполнен без ошибок. Простой "ОК" будет делать.

0

мой плохой... Ответ был очень прост.

Я просто добавляю это в код моего обработчика:

request.sendResponseHeaders( 200, 0 );
  • 0
    Пожалуйста, отметьте это как ваш ответ

Ещё вопросы

Сообщество Overcoder
Наверх
Меню