在Web服务中使用JavaScript提取无法正常工作

时间:2018-07-09 17:06:56

标签: javascript java http server

因此,我正在尝试制作一个允许某人从服务器获取数据的Web服务。现在,我正在使用的服务器是使用Java的HttpServer类编写的。我计划使用javascript中的fetch()来使服务器可访问,但是它不起作用。

当我第一次测试服务器时,我使用了Apache的HttpComponents库和那个客户端(用Java编写)。能够收到来自我的服务器的测试json。但是,当我在JavaScript客户端上使用fetch()时,在console.log所有内容时都什么也没收到。对于我来说,为什么它可以在Java中运行而不是在JavaScript中运行,这对我来说没有任何意义。有谁知道为什么这不起作用?我只是在把javascript部分做错了,并且确实有效吗?谢谢!

代码段供参考:

java服务器:

public class Main {
    private static final int PORT = 1337;
    private static final int BACKLOG = 1;
        public static void main(String[] args) {
        try {
            HttpServer server = HttpServer.create(new InetSocketAddress(PORT), BACKLOG);
            System.out.print("started on" + PORT);
            HttpContext context = server.createContext("/ex", new Handler());
            server.start();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

class Handler implements HttpHandler {

    @Override
    public void handle(HttpExchange he) throws IOException {
        System.out.println("handled");
        JSONObject obj = new JSONObject(); 
        obj.put("name", "value");
        obj.put("num", new Integer(100));
        obj.put("balance", new Double(1000.21));
        obj.put("is_vip", new Boolean(true));
        obj.put("array", new int[]{1, 2, 3});
        String response = obj.toJSONString();
        he.sendResponseHeaders(200, response.length());
        he.getResponseBody().write(response.getBytes());

    }

}

java客户端:

public class PostTest {

    public static void main(String[] args) throws IOException {
        CloseableHttpClient httpClient = HttpClients.createDefault();
        HttpPost httppost = new HttpPost("http://localhost:1337/ex");
        CloseableHttpResponse response = httpClient.execute(httppost);
        System.out.println("STATUS LINE");
        System.out.println(response.getStatusLine().toString());
        System.out.println("HEADER");
        Header[] h = response.getAllHeaders();
        for(int i = 0; i < h.length; i++) {
            System.out.println(h[i]);
        }
        System.out.println("ENTITY.CONTENT");
        try(BufferedReader br = new BufferedReader(new InputStreamReader(response.getEntity().getContent(), "UTF-8"))) {
            String s;
            while((s = br.readLine()) != null) {
                System.out.println(s);
            }
        }
    }

}

Javascript:

var init = {mode: "no-cors"};
    async function f() {
        return fetch("http://localhost:1337/ex", init).then(res => res.text()).then(posts => console.log(posts));
    }
    f();

0 个答案:

没有答案