Java:如何检查php脚本输出的内容?

时间:2011-10-25 16:54:29

标签: java php inputstream

抱歉这个愚蠢的问题,但我对java net的了解很糟糕。 在我的Android应用程序中,调用许多php脚本从mysql数据库中获取数据。 这些数据以json格式返回,我使用Google json库来解析它们。 一切正常但在每个php页面都知道我必须添加一个测试。测试是成功的,然后脚本继续并返回json文件,但是如果测试失败,脚本返回字符串“false”,或者返回值false(由我决定)和我的应用程序而不是显示数据必须将用户重定向到登录页面。

代码如下:

        URL url = new URL(Costanti.IP_SERVER+"myApps.php"+"?userId="+this.userId);
        try 
        {

            HttpURLConnection conn = (HttpURLConnection)url.openConnection();
            int status = conn.getResponseCode();
            if (status >= 200 && status <= 299)
            {
                Reader r = new InputStreamReader(conn.getInputStream());
                Applicazioni dati = new Applicazioni();
                try 
                {

                    dati = gsonReader.fromJson(r, Applicazioni.class);

                    return dati;
                } 
                catch (Exception e) 
                {
                    System.out.println("Ho fallito a prendere i dati");
                    Log.e("JSON_Parser",e.toString());

                }
            }   
        } 
        catch (IOException e) 
        {
            System.out.println("Ho fallito la connnection");
            e.printStackTrace();
        }
    } 

所以基本上我使用这个谷歌库来读取imputStreamReader中的json文件,并用我的数据填充Applicazioni对象。

我如何检查imputStreamReader的内容是字符串“false”还是布尔值false,如果它不同,则用json库解析它?

在最后的PHP中我做到了 echo json_encode($ applicazione); 在一个案例或 在另一种情况下回声“假” TNX

2 个答案:

答案 0 :(得分:2)

InputStream in = new URL(url).openStream();
Scanner scanner = new Scanner(new InputStreamReader(in));
String result = scanner.useDelimiter("\\Z").next(); // this reads the whole
                                                    // script output in a string
if(result.equals("false"))
 handle the false value...
else
  dati = gsonReader.fromJson(result, Applicazioni.class);

答案 1 :(得分:1)

你可以从PHP中对json编码假结果也像[“result”=&gt;“false”],这样你就可以在Java程序中始终进行JSON解码,然后查找结果值。

您可以将结果值放在输出中。