환경 : WildFly 8.1.REST 서비스는 항상 OK를 반환합니다. 왜?
하나의 서버에 2 개의 응용 프로그램을 배포합니다. 하나는 다른 사람과 연결하고 나머지 서비스에 POST 메서드를 실행하려고합니다. 서비스 프로젝트에서
내가 추가 :
import javax.annotation.security.PermitAll;
import javax.inject.Inject;
import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import pl.patom.en.rest.model.LoginData;
import pl.patom.en.security.model.User;
import pl.patom.en.services.UserService;
@Path("services")
public class RestService {
@Inject
private UserService userService;
@PermitAll
@POST
@Consumes(MediaType.APPLICATION_JSON + ";charset=UTF-8")
@Path("/login")
public Response login(LoginData ld) {
User checkedUser = userService.findByLogin(ld.getUsername());
if (checkedUser == null || !checkedUser.getPassword().equals(ld.getPassword())) {
return Response.serverError().build();
}
return Response.ok().build();
}
}
에서 :
import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;
@ApplicationPath("/rest")
public class RsActivator extends Application {
}
를 지금까지 내가 제이보스와 JAX-RS에 대한 사용 설명서를 이해하고,이 서비스를 실행하기에 충분한 아래에 나열해야한다 프로젝트에서 전화를 걸면이 방법을 사용할 수 있습니다.
public String login() {
try {
HttpClient client = HttpClientBuilder.create().build();
HttpPost postRequest = new HttpPost("http://localhost:8080/en/rest/services/login/");
LoginData ld = new LoginData(username, password);
Gson gson = new Gson();
String json = gson.toJson(ld);
StringEntity input = new StringEntity(json);
input.setContentType("application/json");
postRequest.setEntity(input);
postRequest.setHeader("Authorization", "Basic cm9vdDpyb290");
HttpResponse response = client.execute(postRequest);
if (response.getStatusLine().getStatusCode() == 200) {
loggedIn = true;
return "/secured/index.xhtml?faces-redirect=true";
} else {
loggedIn = false;
}
} catch (Exception e) {
loggedIn = false;
}
return null;
}
왜 항상 200 OK 응답을 얻습니까? @GET 또는 @POST annotation = always OK를 사용하면 문제가되지 않습니다. 둘째, 메서드에서 디버거 활동이 없습니다 (응용 프로그램은이 메서드 내의 모든 중단 점에서 중지하지 않습니다). public 응답 login (LoginData ld) (Firefox에서 RESTClient를 사용할 때 작동합니다).
오, 또 다른 호기심 많은 것이 있습니다 · · ·이 200 OK 상태로 돌아온다 나는 항상 jsf 로그인 폼을 얻고 있습니다.