我使用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时,
telnet 127.0.0.1 8000
我收到错误说
HTTP/1.1 400 Bad Request
Connection to the host lost.
请让我知道我在这里犯的错误。非常感谢。
答案 0 :(得分:5)
您的网络服务器似乎不再支持HTTP 1.0。对于HTTP 1.1,您必须指定版本号和主机名:
GET /luminaSearchService HTTP/1.1
Host: 127.0.0.1
使用Windows命令窗口,正常,您看不到正在键入的内容。
如果您将网络浏览器指向此网址是不是更容易,因为它是一个简单的GET请求?
答案 1 :(得分:1)
您的网络服务可能需要一些请求或标头参数,因此会抛出此错误。你能否提供网络服务合同?