Я пишу тестовый 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();
так как это единственный способ, который я знаю, чтобы стрелять. Пожалуйста, дайте мне знать, если вы делаете это правильно или есть другой способ запустить запрос на сервер.
Благодарю.
От взгляда на API, похоже, вы можете использовать connect() вместо открытия потока (протестируйте его, я этого не сделал).
Тем не менее - вы должны написать что-то в поток ответов, чтобы показать, что запрос был выполнен без ошибок. Простой "ОК" будет делать.
мой плохой... Ответ был очень прост.
Я просто добавляю это в код моего обработчика:
request.sendResponseHeaders( 200, 0 );