我做了一个 REST 服务,如果登录正确,它将返回一个字符串“hej”。 我已经在 J​​ava 中使用 Rest 客户端进行了测试,它工作正常,但对于 javascript 来说还很陌生,需要一些帮助。

我正在使用这个功能

function UserAction() { 
console.log(User()); 
var xhttp = new XMLHttpRequest(); 
xhttp.open("GET", "http://localhost:8080/Footballmanagerrestservice/webresources/login"); 
    xhttp.setRequestHeader("login", User()); 
    xhttp.responseType = 'text'; 
 
xhttp.onreadystatechange = function () { 
    console.log('DONE', xhttp.readyState);  
    if (xhttp.readyState == 4) {; 
        // handle response 
        var response = xhttp.responseText; 
        console.log(response); 
        if (response == "hej") { 
            var url = "http://localhost:8080/FM3/spil2.jsp"; 
            window.location.href = url; 
        } 
    } 
}; 
 
// send the request *after* the callback is defined  
xhttp.send(); 
return false; 
} 
 
function User() { 
username = document.getElementById("username").toString(); 
username = document.getElementById("password").toString(); 
var UserAndPass = "?username=" + username + "&password=" + password; 
return UserAndPass; 
}  

我向您展示了我的 Java 客户端,也许您可​​以明白为什么它不起作用。

public static void main(String[] args) { 
   Client client = ClientBuilder.newClient(); 
 
  String root="http://localhost:8080/Footballmanagerrestservice/webresources/"; 
 
 
String functionPath="login"; 
 
String parameters="?username=s153518&password=holger"; 
Response res = client.target(root+functionPath+parameters) 
        .request(MediaType.APPLICATION_JSON).get(); 
String svar = res.readEntity(String.class); 
System.out.println(svar); 
} 

请您参考如下方法:

代码的第一部分看起来不错,以下部分必须在函数内处理,因为本质上是异步的

var response = JSON.parse(xhttp.responseText); 
console.log(response); 
if (response.toString() == "hej") { 
    var url = "http://localhost:8080/FM3/spil2.jsp"; 
    window.location.href = url 
} 
return false; 

文档:https://developer.mozilla.org/en/docs/Web/API/XMLHttpRequest/onreadystatechange

本质上,您试图将响应作为同步调用来处理,但事实并非如此,响应不是立即可用的,因此您必须注册一个回调(来自文档的回调必须附加到字段 onreadystatechange),一旦服务器响应可用,就会由 javascript 触发。

尝试像这样改变它:

  xhttp.onreadystatechange = function() { 
    if (xhttp.readyState == 4) { 
      // handle response 
      var response = JSON.parse(xhttp.responseText); 
      console.log(response); 
      if (response.toString() == "hej") { 
        var url = "http://localhost:8080/FM3/spil2.jsp"; 
        window.location.href = url 
      } 
    } 
  } 
 
  xhr.send(); 


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!