2017-10-13 19 views
1

JavaでWebサービスを作成しました。 ReactJSのクライアントがWebサービスを呼び出し、応答を表示します。クライアントをlocalhost:8081で実行し、WebサービスをTomcat Apacheのlocalhost:8080で実行します。クライアントを実行するとエラーが表示されます(下に掲載されています)。私のコードで何が問題になるかも教えてください。ReactJSクライアントがJava 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 (Webサービス)

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(); 
    } 

} 
+2

https://enable-cors.org/ –

答えて

2

私は、Cross-Origin Resource Sharingの略であるCORSについてはあまり気にしていないと思います。 Web標準によると、許可されていません。だからあなたがしなければならないことは、クライアントサイドがリクエストを行うことを可能にするためにCORSヘッダーをJavaで設定することです。これは役に立ちます:Using CORS headers with Java

関連する問題