HTTPService
을 사용하는 동안 오류가 있습니다. 나는 샘플 코드를 작성하고 그것은 다음과 같습니다 : 나는 cmd를 신속하고이 구문을 사용하여 텔넷을하려고 할 때,WebService에 텔넷 - HTTP/1.1 400 잘못된 요청
import java.net.InetSocketAddress;
import com.kivar.lumina.services.handlers.LuminaSearchService;
import com.sun.net.httpserver.HttpServer;
public class LuminaWebService {
public static void main(String[] args) throws Exception {
HttpServer server = HttpServer.create(new InetSocketAddress(8000), 0);
server.createContext("/luminaSearchService ", new LuminaSearchService());
server.start();
}
}
그리고 내 핸들러 클래스
import java.io.IOException;
import java.io.OutputStream;
import com.kivar.lumina.services.interfaces.SearchService;
import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
public class LuminaSearchService extends Thread implements SearchService, HttpHandler {
@Override
public void handle(HttpExchange arg0) throws IOException {
setDaemon(true);
String response = "This is the response";
arg0.sendResponseHeaders(200, response.length());
OutputStream os = arg0.getResponseBody();
os.write(response.getBytes());
os.close();
}
}
텔넷 127.0.0.1 8000
나는
HTTP/1.1 400 Bad Request
Connection to the host lost.
여기 내가 저지른 실수를 알려주십시오. 엄청 고마워.
텔넷에서 HTTP 헤더를 보내고 있습니까? 아니면 입력을 기다리지 않고 즉시 실패합니까? 두 번째 경우 버그입니다 ... – fge
사실이 간단한 웹 서비스를 테스트하는 올바른 방법은 무엇인지 모릅니다. 'telnet 127.0.0.1 8000'을 실행하면 빈 화면이 나타나지만'GET/luminaSearchService' (cmd 프롬프트에 표시되지 않음)를 입력하려고하면 오류가 발생합니다. – LPD
HTTP 버전을 지정해야합니다 , 즉'GET/luminaSearchService HTTP/1.0'을 사용합니다. 그런 다음 Return을 두 번 누르십시오. 즉, 요청의 끝을 나타내는 빈 줄을 남겨 두십시오. – Rup