Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java REST服务总是返回OK,为什么?_Java_Rest_Wildfly 8 - Fatal编程技术网

Java REST服务总是返回OK,为什么?

Java REST服务总是返回OK,为什么?,java,rest,wildfly-8,Java,Rest,Wildfly 8,环境:WildFly 8.1 我在一台服务器上部署了两个应用程序。一个正在连接另一个并尝试在rest服务上运行POST方法 在服务项目中,我添加了: import javax.ws.rs.ApplicationPath; import javax.ws.rs.core.Application; @ApplicationPath("/rest") public class RsActivator extends Application { } 据我所知,wildfly和jax rs的用户指南应

环境:WildFly 8.1

我在一台服务器上部署了两个应用程序。一个正在连接另一个并尝试在rest服务上运行POST方法

在服务项目中,我添加了:

import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;

@ApplicationPath("/rest")
public class RsActivator extends Application {
}
据我所知,wildfly和jax rs的用户指南应该足以运行下面列出的服务:

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();
}
}
在我调用服务的项目中,我有以下方法:

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。其次,方法应用程序中没有调试器活动在该方法中的任何断点上都不会停止: 公共响应登录登录数据 当我在Firefox中使用RESTClient时,它可以工作


哦,还有一件奇怪的事。。。作为这个200 OK状态的回报,我总是得到jsf登录表单。

通过将:/rest/*添加到web资源集合的非安全部分来解决问题