2012-01-10 1 views
0

Я новичок в веб-сервисе. я пытаюсь сделать простой REST веб-службы на Java для простого приложения входа в систему .. вот мой код:Как получить доступ к веб-сервису из автономного html-файла?

сторона

Сервер:

package com.testingws.webservices; 

import javax.ws.rs.GET; 
import javax.ws.rs.Path; 
import javax.ws.rs.PathParam; 
import javax.ws.rs.Produces; 
import javax.ws.rs.core.MediaType; 


@Path("/login/{username}/{password}/{datetime}") 
public class webServicesClass { 
    @GET // this method process GET request from client 
    @Produces("application/json") // sends JSON 
    public String getJson(@PathParam("username") String username, @PathParam("password") String password) { // empno represents the empno sent from client 
     if (username.equalsIgnoreCase("admin") && password.equalsIgnoreCase("admin")){ 
      return "{'loginstatus':'success'}"; 
     } 
     else{ 
      return "{'loginstatus':'failed'}"; 
     } 
    } // end of 

} 

стороне клиента:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>Client Login</title> 
<script type="text/javascript"> 
    function loginProcess(){ 
     var tempUser = document.getElementById("loginUsername"); 
     var tempPass = document.getElementById("loginPassword"); 

     var dateTime = new Date(); 
     var url = "http://localhost:8181/TestWSProject/authentication/login/" + tempUser.value + "/" + tempPass.value + "/" + dateTime.toUTCString(); 

     var xmlhttp = new XMLHttpRequest(); //@slaks: i put it here 

     xmlhttp.open('GET',url,true); 
     xmlhttp.send(null); 
     xmlhttp.onreadystatechange = function() { 
       if (xmlhttp.readyState == 4) { 
        if (xmlhttp.status == 200) { 
         var det = eval("(" + xmlhttp.responseText + ")"); 

         //alert(det.loginstatus); 
         if(det.loginstatus=="success") 
         { 
          setCookie("login", "yes", 1); 
          window.location="main.html"; 
         } 
         else 
         { 
          alert("incorrect username or password"); 
         } 

       } 
       else 
         alert("Error ->" + xmlhttp.status + xmlhttp.responseText); 
       } 
     } 
    } 

    function getCookie(c_name) 
    { 
     var i,x,y,ARRcookies=document.cookie.split(";"); 
     for (i=0;i<ARRcookies.length;i++) 
     { 
     x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("=")); 
     y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1); 
     x=x.replace(/^\s+|\s+$/g,""); 
     if (x==c_name) 
     { 
      return unescape(y); 
     } 
     } 
    } 

    function setCookie(c_name,value,exdays) 
    { 
     var exdate=new Date(); 
     exdate.setDate(exdate.getDate() + exdays); 
     var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString()); 
     document.cookie=c_name + "=" + c_value; 
    } 

    function checkCookie() 
    { 
     var loginStatus=getCookie("login"); 
     //alert(loginStatus); 
     if (loginStatus=="yes") 
     { 
      //alert("Masuk pengecekan") 
      window.location="main.html"; 
     } 
    } 
</script> 
</head> 
<body onload="checkCookie()"> 
    <h2>LOGIN FORM</h2> 
    <BR> 
    Username : <input type="text" id="loginUsername"/> 
    <BR> 
    Password : <input type="password" id="loginPassword"/> 
    <BR> 
    <input type="button" value="Login" onclick="loginProcess()"/> 
</body> 
</html> 

, когда я доступ к моему клиенту из webContent url (http: //localhost/TestWSProject/index.html), что служба работает отлично, но если я получаю доступ к моему клиенту из автономного HTML-файла (файл: /// D:/+ Prog/webservice/TestWSProject /WebContent/index.html), он дает мне xmlHTTPStatus = 0 и эта служба не работает .. любое решение для Эта проблема?? действительно спасибо ..

+0

Такая же политика происхождения - http://en.wikipedia.org/wiki/Same_origin_policy. – Perception

+0

да .. ты знаешь, как это решить? спасибо .. –

ответ

0

Некоторые браузеры имеют ограничения безопасности, которые ограничивают файлы от выполнения определенных действий, если к ним обращаются непосредственно из файловой системы.

Это может быть причиной ошибки.

+0

да .. я согласен с тобой .. но в моем случае мне нужно вызвать какой-то веб-сервис из другого автономного файла .. любая идея ?? спасибо .. –

+0

Есть несколько интересных сообщений по этой теме по этому вопросу (http://stackoverflow.com/questions/4208530/xmlhttprequest-origin-null-is-not-allowed-access-control-access-allow-for- файл). Это может указывать на правильное направление. – DaveE

+0

Спасибо за ваш комментарий daveE .., что ссылки полностью работают, когда я использую google chrome, но в этом случае я использую браузер мобильных устройств для восстановления веб-сервиса .. любое другое предложение? действительно застрял здесь .. T.T –

Смежные вопросы