3

我使用HTTPService. 我写了一个示例代码,它看起来像这样:

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();
    }

}

当我尝试使用 cmd 提示符和此语法进行 telnet 时,

远程登录 127.0.0.1 8000

我收到一条错误消息

HTTP/1.1 400 Bad Request
Connection to the host lost.

请让我知道我在这里犯的错误。万分感谢。

4

2 回答 2

5

您的 Web 服务器似乎不再支持 HTTP 1.0。对于 HTTP 1.1,您必须指定版本号和主机名:

GET /luminaSearchService HTTP/1.1
Host: 127.0.0.1

在 Windows 命令窗口中,您看不到正在输入的内容是正常的。

如果您将 Web 浏览器指向此 URL,会不会更容易,因为它是一个简单的 GET 请求?

于 2013-06-01T13:37:30.370 回答
1

您的 Web 服务可能需要一些请求或标头参数,因此会引发此错误。你能提供网络服务的合同吗?

于 2013-06-01T13:31:58.093 回答