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を実行しようとすると、

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 のコマンド ウィンドウでは、入力した内容が表示されないのが普通です。

これは単純な GET 要求なので、この URL を Web ブラウザーで指定した方が簡単ではないでしょうか?

于 2013-06-01T13:37:30.370 に答える
1

Web サービスが何らかのリクエストまたはヘッダー パラメータを予期しているため、このエラーがスローされている可能性があります。Webサービスの契約も提供できますか?

于 2013-06-01T13:31:58.093 に答える