【问题标题】:Getting a null response when calling a php site function from java in android从android中的java调用php站点函数时获得空响应
【发布时间】:2017-12-09 06:34:36
【问题描述】:

我正在尝试从一个 android 应用程序调用一个网站上的 php 函数。

我正在使用它来获得我的回复:https://github.com/koush/ion

这是我的 php 代码,位于:Link 它用于连接到我在该站点上的数据库。 php 文件只是将数据库中的所有条目作为 php 代码下显示的 HTML 文本返回(不确定这是否是从数据库获取数据的正确方法)。 数据库条目有自己的标签,因此我可以稍后在应用程序中处理它们。

<?php
include('dbconnect.php');
if (isset($_GET['Tabela'])) {
    DobiPodatke($_GET['Tabela']);
} else {
    ECHO '<error>Ni selekcije</error>';
}



function DobiPodatke($Tabela)
{
$sqlget = "SELECT * FROM " . $Tabela;
ZazeniQuery($Tabela, $sqlget);
}


function ZazeniQuery($Ime, $Query){
$sqldata = mysqli_query($GLOBALS['dbcon'], $Query) or die('<error>error with fetching data</error>');
    ECHO '<' . $Ime . '>';
    while($row = mysqli_fetch_array($sqldata, MYSQLI_ASSOC)){
        switch($Ime){
            case 'Sola':
                ECHO '<vnos><Kratka_Oznaka>' . $row['Kratka_Oznaka'] . '</Kratka_Oznaka><Ime>' . $row['Ime'] . '</Ime></vnos>';
                break;
            case 'Stroka':
                ECHO '<vnos><Ime_Stroke>' . $row['Ime_Stroke'] . '</Ime_Stroke></vnos>';
                break;
            case 'Sola_Smer':
                ECHO '<vnos><ID_Sole>' . $row['ID_Sole'] . '</ID_Sole><ID_Stroke>' . $row['ID_Stroke'] . '</ID_Stroke><Stevilo_mest>' . $row['Stevilo_mest'] . '</Stevilo_mest></vnos>';
                break;
        }
    }
    ECHO '</' . $Ime . '>';
}


?>

HTML 响应: HTML

现在为了让它工作,我需要提供我需要从哪个表中获取信息的 php 函数参数,所以我这样称呼它:

https://illegible-deflector.000webhostapp.com/Site3/dbtest.php?Tabela=Sola

Tabela beeing 我需要传入的变量,否则 php 会执行 die()

在上面的示例中,我调用了末尾带有“?Tabela=Sola”的 php 文件,以获取表“Sola”中的所有表条目。 虽然这适用于浏览器,但它不适用于我的应用程序。

现在在我的 android 应用程序中,我使用 Ion 库/类以纯 HTML 代码从网站获取响应。它适用于常规网站,因为我可以从该网站获取整个 HTML 代码。

但是它在我的 php 网站上不起作用,因为我得到一个空结果。

以下代码中的链接变量为:

https://illegible-deflector.000webhostapp.com/Site3/dbtest.php?Tabela=Sola

连接网站并返回结果的Java代码:

private static void ParseDBFront(String link, Context context){
    Ion.with(context).load(link).setLogging("MyLogs", Log.DEBUG).asString().setCallback(new FutureCallback<String>() {
        @Override
        public void onCompleted(Exception e, String result) {
            Log.i("LOG", "LOG: " + result);
        }
    });
}

而我在运行时从上面的代码得到的响应是:

I/LOG: LOG: 空

我只需要让 java 代码返回 HTML 代码,但我不知道为什么它不会返回 html 代码。 我猜我正在以错误的方式解析我的变量。

感谢您对此问题的任何反馈或解决方案。

【问题讨论】:

  • 每次我运行和安装apk并从服务器请求数据到模拟器时,我也会得到这个null。但是当我第二次提出请求时就可以了。
  • @Md.SojibAhmed 你能否进一步解释一下你究竟做了什么来让它处理第二个请求?

标签: java php android html


【解决方案1】:

设法自己弄清楚。 代码原样没有问题,问题在于我编写 php 文件 URL 的方式。

原文链接:

private static final String DBLink = "www.illegible-deflector.000webhostapp.com/Site3/dbtest.php?Tabela=";

以及我是如何修复它的:

私有静态最终字符串 DBLink = "https://illegible-deflector.000webhostapp.com/Site3/dbtest.php?Tabela=";

那个“万维网”。 / "https://" 差异是导致我的程序由于某种原因返回空响应的全部原因。

我不知道为什么,但问题已经消失了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-19
    • 1970-01-01
    • 2018-10-29
    • 1970-01-01
    相关资源
    最近更新 更多