【问题标题】:java boolean from php website来自php网站的java布尔值
【发布时间】:2014-06-06 19:55:57
【问题描述】:

我想在 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;
}

并检查功能是否启用

        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,(我确实 echo 'true';)但是 java 控制台总是返回 false(我想要 true,因为网站在这个链接上有 true)并且它记录:

Licencja zostala sfalszowana! Zglaszam 做 serwera autoryzacji!

怎么了?如何在我的网站上返回 true 以允许 java 学习这个布尔值?>

【问题讨论】:

  • 调试代码以找出 str 真正包含的内容。它是否可能在文本true 之后包含空格或换行符?对于Boolean.valueOf(...) 要返回truestr 必须包含 4 个字符 true 并且没有其他内容(没有空格等)。
  • 哦,它在网站上是真的,但它返回“假”@Jesper

标签: java php


【解决方案1】:

那是因为您的服务器不只是返回 True 或 False。它正在返回这个:

<html>
</html>
            True

而您的代码仅读取第一行 &lt;html&gt; 并将其解析为布尔值,结果为 false。

要修复它,要么阅读整个身体以寻找真/假,要么只返回你身体上的真/假。

即使包含&lt;html&gt; 标签,以下代码也应该适用于当前的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;

【讨论】:

  • 你能给我发个例子吗?
【解决方案2】:

我试过你的链接http://mineverse.pl/haslicense.php?license=diverse12345,它返回了这个:

          True

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

你需要去掉 HTML 标签、空格和换行符,大小写也很重要; True 不行,必须是true

【讨论】:

  • 你能帮我解决这个问题吗?真的很新,我怎样才能恢复真实?
  • 我需要添加我在 php 中的 echo 中执行此操作。
猜你喜欢
  • 2011-10-13
  • 1970-01-01
  • 2012-01-06
  • 2011-04-13
  • 1970-01-01
  • 1970-01-01
  • 2012-01-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多