Я очень новичок в React JS и Java-сервлетах.Я создал представление в React и конечную точку API в сервлете, используя Джерси.И фронтенд, и бэкэнд запускаются на сервере Tomcat на моей локальной машине.Сервлет пытается получить доступ к службе, работающей на http://localhost:37070/expenseClaimService/start
, чтобы опубликовать новую заявку.Эта служба тестируется отдельно и возвращает id
новой созданной заявки.
Теперь я пытаюсь вызвать конечную точку в сервлете, используя Fetch
из приложения React.Однако я продолжаю получать Failed to load resource: the server responded with a status of 406
в приложении React.
вызов выборки в приложении React
handleAddClaim = () => {
console.log("in method");
fetch("http://localhost:8080/eca/api/claims/new-claim", {
method: "POST",
headers: {
Accept: "text/plain",
"Content-Type": "application/json",
"Access-Control_Allow-Orign": "*"
},
body: JSON.stringify({
empName: "Test Vendor4",
empFirstname: "Test",
empLastname: "Vendor4",
empEmail: "test4@mail.com",
empId: "test3",
empJobTitle: "SE",
date: "08 December, 2018",
refNo: "testRef999",
memo: "OPD test claim 11",
claims: [
{
amount: "9500.00",
memo: "Test claim - Medicine",
billDate: "4 December, 2018"
}
]
})
})
.then(response => {
console.log(response);
})
.catch(error => {
console.error(error);
});
};
Конечная точка в сервлете
@Path("/claims")
public class OPDClaimEndpoint {
@POST
@Path("/new-claim")
@Produces(MediaType.TEXT_HTML)
@Consumes(MediaType.APPLICATION_JSON)
public String addNewClaim(JsonObject body){
return ExecutionUtils.generatePostRequest(body.toString());
}
}
Генерация почтового запроса (с использованием Apache HttpClient)
public static String generatePostRequest(String input){
String url = "http://localhost:37070/expenseClaimService/start";
try {
StringEntity requestEntity = new StringEntity(
input,
ContentType.APPLICATION_JSON);
HttpPost request = new HttpPost(url);
request.setHeader(HttpHeaders.ACCEPT, MediaType.APPLICATION_JSON);
request.setEntity(requestEntity);
HttpClient client = HttpClientBuilder.create().build();
HttpResponse response = client.execute(request);
return response.toString();
}
catch ( IOException e) {
logger.info(e.getMessage());
}
return "Failed";
}
web.xml
<servlet>
<servlet-name>eca-api</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.org.eca.client.api.endpoint</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>eca-api</servlet-name>
<url-pattern>/api/*</url-pattern>
</servlet-mapping>
Как мне решить эту проблему, чтобы я мог вызвать службу из приложения React?Любая помощь очень ценится.