java - ReactJS 客户端无法与 Java Web 服务通信

标签 java reactjs web-services

我用 Java 编写了一个 Web 服务。 ReactJS 中的客户端调用我的网络服务并显示响应。我在 localhost:8081 运行我的客户端,在 localhost:8080 的 Tomcat Apache 上运行我的 Web 服务。但是当我运行我的客户端时出现错误(在下面发布)。请告诉我的代码中可能存在什么问题?

错误: enter image description here

View.jsx (客户端):

import React from 'react';

class View extends React.Component {

    constructor() {
        super();
        this.state = {
            text: "initial state"
        };
    }

    componentDidMount() {
        $.ajax({
            url: "localhost:8080/UserManagement/rest/myService/data"
        }).then((function(data) {
            this.setState({text: data});
        }).bind(this))
    }

    render() {
        return (
            <div>
                {this.state.text}
            </div>
        );
    }
}

export default View;

MyServer.java (网络服务):

package com.tutorialspoint;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;

import org.json.JSONObject;


@Path("myService")
public class MyServer {

    @GET
    @Path("/data")
    @Consumes(MediaType.APPLICATION_JSON)

    public Response queryRESTService(InputStream incomingData) {

        JSONObject jsonObject = null;
        try {
            String output = "";
            InputStream inputStream = new FileInputStream("C:\\Users\\username\\Desktop\\myJSON.txt");
            InputStreamReader inputReader = new InputStreamReader(inputStream);
            BufferedReader bufferedReader = new BufferedReader(inputReader);
            String line;
            while ((line = bufferedReader.readLine()) != null) {
                output += line + "\n";
            }
            jsonObject = new JSONObject(output);
            bufferedReader.close();
        }
        catch (Exception e) {
        }
        return Response.status(200).entity(jsonObject.toString()).build();
    }

    @GET
    @Path("/verify")
    @Produces(MediaType.TEXT_PLAIN)
    public Response verifyRESTService() {
        String result = "MyRESTService Successfully started..";
        return Response.status(200).entity(result).build();
    }

}

最佳答案

我猜你不太了解 CORS,它代表跨源资源共享。根据网络标准,这是不允许的。所以你要做的是在 Java 中设置一个 CORS 头,以允许客户端发出请求。这将有助于:Using CORS headers with Java

关于java - ReactJS 客户端无法与 Java Web 服务通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46723618/

相关文章:

java - 如何在 javafx 的 init 方法中创建警报对话框?

java - 将 logging.properties 文件更改为 Slf4j 中的不同路径

javascript - React Plaid 组件刷新页面

javascript - React Router 不加载外部 html 文件

c# - SOAP web 服务时出现 InvalidOperationException - 但在开发机器上工作

python - 选择使用 DAL 和 web2py 将 PostgreSQL 数据库连接到 Web 服务器

C# 与 Java 枚举(适用于 C# 新手)

java - 正则表达式匹配以特定数字开头并以分号结尾的字符串

django - 在 django-react-redux 中 PUT 文件请求

java - Spring,@WebService/@WebMethod,(使用Jax-WS),接收序列化对象?