2014-06-06 49 views
0

我想在java中创建许可证系统。来自php网站的java布尔值

我创建了检查许可证是否为真的函数。

我的代码:

private static boolean isPurchased(String license) 
{ 
    try 
    { 
     URL url = new URL("http://mineverse.pl/haslicense.php?license=" + license); 
     BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream())); 
     String str = in.readLine(); 
     in.close(); 
     return Boolean.valueOf(str); 
    } catch (Exception e) 
    { 
     e.printStackTrace(); 
    } 
    return false; 
} 

和chceck功能onenable

 if(this.isPurchased(license)){ 
        String license = cfg.getString("Licensing_System.License"); 
     System.out.println("Licencja" + license + " kupiona! Dziekujemy!"); 
     System.out.println(this.isPurchased(license)); 

    }else { 
     System.out.println("Licencja zostala sfalszowana! Zglaszam to do serwera autoryzacji!"); 
    } 

而且我的链接:

http://mineverse.pl/haslicense.php?license=diverse12345

,你可以看到这个链接返回true,(我做回声'真';)但Java控制台总是返回假(我想因为网络真这个链接是真实的),它的日志:

Licencja zostala sfalszowana! Zglaszam做serwera autoryzacji!

怎么了?我怎么能在我的网站返回true,以允许Java学习这个布尔>

+0

调试代码,找出'str'的​​确不包含。它可能包含空格或文本'true'后的换行符?对于'Boolean.valueOf(...)'返回'true','str'必须包含4个字符'true',没有其他东西(没有空格等)。 – Jesper

+0

theres任何错误, – user3650308

+0

哦它在网站上的真实性,但它的回报“假”@Jesper – user3650308

回答

0

这是因为你的服务器不只是返回True或False。它返回这个代替:

<html> 
</html> 
      True 

,你的代码只读取第一行<html>和解析它作为一个布尔值,这会导致错误的。

要修复它,要么阅读整个身体寻找真/假或返回正确/错误在你的身体。

下面的代码应与即使它包含了<html>标签当前的HTML工作:

 URL url = new URL("http://mineverse.pl/haslicense.php?license=" + license); 
     BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream())); 
     String str = null; 
     boolean ret = false; 
     while ((str = in.readLine()) != null) { 
      str = str.toLowerCase(); 
      if (str.contains("true")) { 
       ret = true; 
       break; 
      } 
     } 
     in.close(); 
     return ret; 
+0

你能给我一个例子吗? – user3650308

0

我想你的链接http://mineverse.pl/haslicense.php?license=diverse12345和它返回:

<HTML>

</HTML >

  True 

当您将其传递给Boolean.valueOf(...),结果将是false。方法Boolean.valueOf(...)只会返回true如果您通过它的字符串包含正好四个字符:true

您需要摆脱HTML标签,空格和换行符,并且大小写也很重要; True将不起作用,它必须是true

+0

你能帮助我吗?非常新的,我怎么能回报这个真实的? – user3650308

+0

我需要添加我在php中回声。 – user3650308