标签: com.sun.net.httpserver

如何下载com.sun.net.httpserver包?

我不熟悉哪里可以获得com.sun.net.httpserver包?我喜欢在Android中使用这个包.

谢谢!

java android com.sun.net.httpserver

12
推荐指数
2
解决办法
3万
查看次数

自Java 7以来1s延迟了HttpServer

我们使用HttpServer项目中的内部类通过HTTP在客户端和服务器之间交换数据.当我们切换到Java 7时,我们意识到结果交付的延迟.我们可以将问题减少到以下示例:

EchoServer创建上下文/echo,该上下文仅在每个请求时返回当前日期和请求URI.然后,客户端在循环中调用此服务.

import java.io.IOException;
import java.io.OutputStream;
import java.net.InetSocketAddress;
import java.util.Date;

import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
import com.sun.net.httpserver.HttpServer;

public class EchoServer {

    public static void main(String[] args) throws IOException {
        HttpServer server = HttpServer.create(new InetSocketAddress(80), 0);
        server.createContext("/echo", new EchoHandler());
        server.start();
    }

    static class EchoHandler implements HttpHandler {
        public void handle(HttpExchange httpExchange) throws IOException {
            httpExchange.getResponseHeaders().add("Content-type", "text/html");
            String response = "<b>" + new Date() + "</b> for "  + httpExchange.getRequestURI();
            httpExchange.sendResponseHeaders(200, response.length());
            OutputStream os = httpExchange.getResponseBody(); …
Run Code Online (Sandbox Code Playgroud)

java java-7 com.sun.net.httpserver

7
推荐指数
1
解决办法
2948
查看次数

如何关闭com.sun.net.httpserver.HttpServer?

嵌入在JDK 6中的Http Server是开发Web服务的一个很大的帮助,但是我遇到了我发布了一个Endpoint然后代码崩溃并让服务器运行的情况.

一旦丢失对它的引用(或已发布的端点),如何关闭嵌入式服务器?

java jdk1.6 com.sun.net.httpserver

5
推荐指数
2
解决办法
8981
查看次数

com.sun.HttpServer套接字积压

套接字积压是什么意思?

例如我有网络服务

@WebService
public class Calculator {
public int sum(int a, int b) {
    try {
        Thread.sleep(1000);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    return a + b;
}

public static final int threadCount = 10;

public static void main(String[] args) throws IOException {
    Executor manyThreads = Executors.newFixedThreadPool(threadCount);
    HttpServer server = HttpServer.create(new InetSocketAddress(8989), threadCount);
    server.setExecutor(manyThreads);
    server.start();

    Endpoint ep = Endpoint.create(new Calculator());
    HttpContext context = server.createContext("/calc");
    ep.publish(context);
}
}
Run Code Online (Sandbox Code Playgroud)

和网络服务客户端

 public static void main(String[] args) throws IOException {
    CalculatorService service = …
Run Code Online (Sandbox Code Playgroud)

java multithreading web-services com.sun.net.httpserver

5
推荐指数
1
解决办法
2765
查看次数

Sun HTTPServer - 如何编写后处理过滤器?

我尝试使用 Sun JRE 的 HTTP 服务器进行一些操作。看了两遍文档,我还是一头雾水。

com.sun.net.httpserver.Filter javadoc表示以下内容

要求此过滤器对给定的交换进行预处理/后处理。该过滤器可以:

  • 检查或修改请求标头
  • 通过创建合适的过滤器流并调用 HttpExchange.setStreams(InputStream,OutputStream) 来过滤请求正文或响应正文
  • 设置交换中的属性对象,其他过滤器或交换处理程序可以访问该对象。
  • 决定:

    • 通过调用 Filter.Chain.doFilter(HttpExchange) 调用链中的下一个过滤器
    • 通过不调用 Filter.Chain.doFilter(HttpExchange) 来终止调用链

    如果采用上述选项 1,则当 doFilter() 返回时,链中的所有后续过滤器都已被调用,并且可以检查或修改响应标头。如果采用上述选项 2,则此 Filter 必须使用 HttpExchange 发回适当的响应

我不清楚是什么,什么决定了过滤器是预处理过滤器还是后处理过滤器。正如我所假设的,后处理过滤器在HttpHandler之后运行,因此它可以与 HttpExchange 一起使用 HttpHandler 修改的内容。但是,过滤器仅被调用一次,因此必须有一个“魔法”来决定过滤器在处理程序之前或之后运行。

请帮我说清楚。

java com.sun.net.httpserver

5
推荐指数
1
解决办法
1996
查看次数

java HttpServer的源代码

我无法在java 1.6的src.jar中找到com.sun.net.httpserver.HttpServer源代码.哪里有空位?

java com.sun.net.httpserver

4
推荐指数
1
解决办法
4930
查看次数

无法使用com.sun.net.HTTPServer.httpserver

我正在使用Eclipse Indigo和Java jdk7.

我想创建一个小网络服务器,但我无法使用sun的网络服务器.

当我输入:

{
 com.sun.net.httpserver.httpserver server;
}
Run Code Online (Sandbox Code Playgroud)

我得到以下Eclipse-Error-Message:

Description Resource    Path    Location    Type
Access restriction: The type HttpServer is not accessible due to restriction
    on required library C:\jdk1.7.0\jre\lib\rt.jar
Server.java /REST-Server/src/com/test/restserver    line 7  Java Problem
Run Code Online (Sandbox Code Playgroud)

我在这做错了什么?我不需要包括任何其他罐子?我呢?

java eclipse com.sun.net.httpserver

3
推荐指数
1
解决办法
8812
查看次数

第一次测试后,junit中的HttpServer因地址使用错误而失败

我有一个Java类用于JUnit 4.x. 在每个@Test方法中,我创建了一个新的HttpServer,使用了端口9090.第一个调用工作查找,但后续的错误与"地址已被使用:绑定".

这是一个例子:

@Test
public void testSendNoDataHasValidResponse() throws Exception {
    InetSocketAddress address = new InetSocketAddress(9090);
    HttpHandler handler = new HttpHandler() {

        @Override
        public void handle(HttpExchange exchange) throws IOException {
            byte[] response = "Hello, world".getBytes();
            exchange.sendResponseHeaders(HttpURLConnection.HTTP_OK, response.length);
            exchange.getResponseBody().write(response);
            exchange.close();
        }
    };
    HttpServer server = HttpServer.create(address, 1);
    server.createContext("/me.html", handler);
    server.start();

    Client client = new Client.Builder(new URL("http://localhost:9090/me.html"), 20, "mykey").build();

    client.sync();
    server.stop(1);
    assertEquals(true, client.isSuccessfullySynchronized());
}
Run Code Online (Sandbox Code Playgroud)

很明显,HttpServer仅在每个方法中保存,并在结束前停止.我没有看到什么继续保持任何套接字打开.第一次测试通过,后续测试每次都失败.

有任何想法吗?

使用更正方法编辑:

@Test
public void testSendNoDataHasValidResponse() throws Exception {
    server = HttpServer.create(new InetSocketAddress("127.0.0.1", 0), 1);
    HttpHandler handler …
Run Code Online (Sandbox Code Playgroud)

java junit com.sun.net.httpserver

3
推荐指数
1
解决办法
1685
查看次数

响应中的Apache HttpClient标头问题

我使用Apache HttpClient和java.sun.net.httpserver作为Server.服务器处理Http-Get请求.首先,服务器使用set-cookie标头设置会话cookie,这是由apache httpclient接受的(根据日志),但问题是cookie永远不会存储,也不会被客户端发送回服务器.我已经使用一些Web浏览器测试了服务器应用程序,并且一切正常.因此问题似乎是在客户端,特别是考虑到所有cookie都被接受与log4j一起登录.

DEBUG [org.apache.http.impl.conn.SingleClientConnManager] Get connection for route HttpRoute[{}->http://localhost]
DEBUG [org.apache.http.impl.conn.DefaultClientConnectionOperator] Connecting to localhost/127.0.0.1:80
DEBUG [org.apache.http.client.protocol.RequestAddCookies] CookieSpec selected: best-match
DEBUG [org.apache.http.client.protocol.RequestAuthCache] Auth cache not set in the context
DEBUG [org.apache.http.impl.client.DefaultHttpClient] Attempt 1 to execute request
DEBUG [org.apache.http.impl.conn.DefaultClientConnection] Sending request: GET /login?pass=2Gi/Kzj9 HTTP/1.1
DEBUG [org.apache.http.headers] >> GET /login?pass=2Gi/Kzj9 HTTP/1.1
DEBUG [org.apache.http.headers] >> Host: localhost
DEBUG [org.apache.http.headers] >> Connection: Keep-Alive
DEBUG [org.apache.http.headers] >> User-Agent: Apache-HttpClient/4.1.1 (java 1.5)
DEBUG [org.apache.http.impl.conn.DefaultClientConnection] Receiving response: HTTP/1.1 200 OK
DEBUG [org.apache.http.headers] << HTTP/1.1 200 OK
DEBUG …
Run Code Online (Sandbox Code Playgroud)

java com.sun.net.httpserver apache-httpclient-4.x

1
推荐指数
1
解决办法
3047
查看次数

HttpServer上的java.lang.OutOfMemoryError下载大数据

我有java 6嵌入式HttpServer.它有一个句柄,允许客户下载一个大文本文件.问题是,当服务器有10个以上的同时客户端时,我会遇到内存异常.我很清楚问题出在Http Server周围.

   HttpServer m_server = HttpServer.create(new InetSocketAddress(8080), 0);
   m_server.createContext("/DownloadFile", new DownloadFileHandler() );

   public class DownloadFileHandler implements HttpHandler {

         private static byte[] myFile = new String("....................").getBytes(); //string about 8M

         @Override
         public void handle(HttpExchange exchange) throws IOException {
                exchange.sendResponseHeaders(HTTP_OK, myFile .length);                 OutputStream responseBody = exchange.getResponseBody();
                responseBody.write(myFile );
                responseBody.close();
         } 
   }
Run Code Online (Sandbox Code Playgroud)

现在我得到的例外是:

java.lang.OutOfMemoryError: Java heap space 
at java.nio.HeapByteBuffer.<init>(Unknown Source)
at java.nio.ByteBuffer.allocate(Unknown Source)
at sun.net.httpserver.Request$WriteStream.write(Unknown Source)
at sun.net.httpserver.FixedLengthOutputStream.write(Unknown Source) 
at java.io.FilterOutputStream.write(Unknown Source) 
at sun.net.httpserver.PlaceholderOutputStream.write(Unknown Source) 
at com.shunra.javadestination.webservices.DownloadFileHandler.handle(Unknown Source) 
at com.sun.net.httpserver.Filter$Chain.doFilter(Unknown Source) 
at sun.net.httpserver.AuthFilter.doFilter(Unknown …
Run Code Online (Sandbox Code Playgroud)

java out-of-memory com.sun.net.httpserver

0
推荐指数
2
解决办法
4873
查看次数