创建一个简单的json响应,可以从Android应用程序的webview访问

时间:2014-02-22 18:39:48

标签: php android json

我有一个url site.com/test.php,其中包含以下代码

<?php

$num1 = $_REQUEST['num1'] ;
$num2 = $_REQUEST['num2'] ;

$tot = $num1 + $num2 ;

?>

使用POST / GET的android应用程序将num1和num2参数传递给www.site.com/test.php

如何以Android应用程序能够从此请求获得响应的方式进行响应。

我试过这个

header('Content-Type: application/json');
echo json_encode($response);

但它所做的就是在网页视图中回显它并且我无法得到响应。我在那里我可以得到响应作为标准的json响应,但是没有显示但只要我点击网址就得到它作为回应?

**更新**

@Override
public boolean shouldOverrideUrlLoading (WebView view, String url) {

    if(flag) { 

            URL aURL = new URL(url); 
            URLConnection conn = aURL.openConnection(); 
            conn.connect(); 
            InputStream is = conn.getInputStream(); 
            // read inputstream to get the json..
            ...
            ...
            return true;
    }

    return false
}

@override
public void onPageFinished (WebView view, String url) {
    if (url contains "form.html") {
        flag = true;
    }
}

这是我从SO获得的java代码,我打算在android appication中使用

1 个答案:

答案 0 :(得分:0)

似乎是处理响应的问题,而不是JSON的生成。您是否在其中包含“form.html”的页面上单击了JSON的链接?因为这就是您发布的代码中假设的内容。

最好只重载shouldOverrideUrlLoading并检查url是否与json页面匹配。像这样:

@Override
public boolean shouldOverrideUrlLoading (WebView view, String url) {

    if(url.toLowerCase().contains("www.site.com/test.php")) { 
            URL aURL = new URL(url); 
            URLConnection conn = aURL.openConnection(); 
            conn.connect(); 
            InputStream is = conn.getInputStream(); 
            // read inputstream to get the json..
            ...
            ...
            return true;
    }

    return false;
}

启动一个活动并在该活动中加载JSON可能是一个好主意,例如,使用AsyncTask(最新的Android API中的UI线程不允许网络操作),而不是立即执行URL.openConnection。