0

HTTP WEB SERVERコードを書いています。

今までGET、HEADメソッドを実装していました。次に、OPTIONS メソッドを実装する必要があります。しかし、今回はクライアントのシェルからの応答はありません。なぜこれが起こっているのか理解できませんでした。その点で私を助けてください。コードを投稿しています。エラーの検出にご協力ください。

私のコード

クライアント

public class Client {

    public static void main(String[] args) {
          HttpClient client = new HttpClient();
          client.getParams().setParameter("http.useragent", "Test Client");
          BufferedReader br = null;

          OptionsMethod method = new OptionsMethod("http://10.40.55.240:8080/");

          try {
            int returnCode = client.executeMethod(method);
            if(returnCode == 405 ) {
                System.out.println("The Options method is not implemented by this URI");                
            } else {
                System.out.println("REACH HERE");
                br = new BufferedReader(new InputStreamReader(/*What I put here to get socket InputStream*/);
                String readLine;
                while((readLine = br.readLine()) != null) {
                    System.out.println(readLine);
                }
            }
            //System.out.println(returnCode);
          } catch(Exception e) {
            e.printStackTrace();
          } finally {
                method.releaseConnection();
                if(br != null) {
                    try {
                        br.close();
                    }   
                    catch(Exception e) {}
                }
         }
    }
}

クライアントに応答するサーバー コード

           else if(methodName.equals("OPTIONS")) {
                System.out.println("GOING TO HANDLE OPTIONS REQUEST");

                printStream.print("HTTP/1.1 " + ServerSettings.HTTP_OK + " OK");
                printStream.write(EOL);
                printStream.print("Date: " + new Date());
                printStream.write(EOL);
                printStream.print("Allow: OPTIONS, GET, HEAD");
                printStream.write(EOL);
                printStream.print("Content-Length: 0");
                printStream.write(EOL);
            }

            inputStream.close();
    printStream.close();

サーバーからヘッダーを受信するにはどうすればよいですか。

ヘッダーを受信するには、クライアント側のコメント部分に何を入力すればよいですか。

br = new BufferedReader(new InputStreamReader(/*What I put here to get socket InputStream*/);

4

1 に答える 1

0

上記の質問の答えは次のとおりです。

がないResponse BodyのでOptions Method。したがって、ここではサーバーがヘッダーのみを応答し、次のステートメントを使用してクライアント シェルに表示できます。

int returnCode = client.executeMethod(method);
if(returnCode == 405 ) {
        System.out.println("The Options method is not implemented by this URI");
} else {
        Header[] header = method.getResponseHeaders();
        for(int i = 0; i < header.length; i++) {
             System.out.println(header[i].getName() + ": " + header[i].getValue());
        }
}

他のメソッドの場合、応答本文もある場合は、以下のコードを使用できます。

try {
    int returnCode = client.executeMethod(method);
    if(returnCode == 405 ) {
        System.out.println("The XXX method is not implemented by this URI");
    } else {
        Header[] header = method.getResponseHeaders();
        for(int i = 0; i < header.length; i++) {
            System.out.println(header[i].getName() + ": " + header[i].getValue());
        }
        br = new BufferedReader(new InputStreamReader(method.getResponseBodyAsStream()));
        byte[] buf = new byte[1024];
        String readLine;
        while (((readLine = br.readLine()) != null)) {
            System.out.println(readLine);
        }
    }
  } catch(Exception e) {
        e.printStackTrace();
   } finally {
        System.out.println("close method");
        method.releaseConnection();
        try {
        br.close();
        } 
        catch(IOException ioe) {}
 }
于 2013-05-10T04:59:37.153 に答える