我的Android应用从POST返回“Javascript not enabled”消息

时间:2015-10-30 17:43:24

标签: javascript java php android

我正在编写一个需要访问MySql服务器的Android应用程序。我发现以下示例,我有一个位于服务器上的php页面并执行MySql的东西,我尝试从我的应用程序访问它。我正在使用Android Studio,并在模拟器中运行该应用程序。我可以从模拟器的浏览器(已启用Javascript)成功调用php,但是当我尝试从我的应用程序调用它时,我得到一个页面,其中包含消息'此站点需要Javascript才能工作,请在浏览器中启用Javascript或使用具有Javascript支持的浏览器'

我的php代码如下:

<?php
$username = $_POST['username'];
$password = $_POST['password'];
$name = $_POST['name'];
$con=mysqli_connect("mysqlserver.com",$username,$password,"mydatabase");

if (mysqli_connect_errno($con))
{
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$result = mysqli_query($con,"SELECT * FROM table1 where name='$name'");
$row = mysqli_fetch_array($result);
$data = "$row[0] $row[1]";

if($data)
{
    echo $data;
}
else
{
    echo "No data returned";
}
mysqli_close($con);
?>

我的Java片段是:

try{
    String username = "user";
    String password = "password";
    String name = "name";

    // Set up connection
    String link="http://myserver.com/temp.php";
    String data  = URLEncoder.encode("username", "UTF-8") + "=" + URLEncoder.encode(username, "UTF-8");
    data += "&" + URLEncoder.encode("password", "UTF-8") + "=" + URLEncoder.encode(password, "UTF-8");
    data += "&" + URLEncoder.encode("name", "UTF-8") + "=" + URLEncoder.encode(name, "UTF-8");

    URL url = new URL(link);
    URLConnection conn = url.openConnection();

    // POST to page
    conn.setDoOutput(true);
    OutputStream os = conn.getOutputStream();
    OutputStreamWriter wr = new OutputStreamWriter(os);

    wr.write( data );
    wr.flush();
    BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));

    // Read Server Response
    StringBuilder sb = new StringBuilder();
    String line = null;

    while((line = reader.readLine()) != null)
    {
        sb.append(line);
    }
    String strMessage = sb.toString();
    char[] message = strMessage.toCharArray();
    DialogFragment dialog = OKDialogFragment.newInstance(message);
    dialog.show(getFragmentManager(), "OKDialogFragmentTag");
}
catch(Exception e){
    String strMessage = "Exception: " + e.getMessage();
    char[] message = strMessage.toCharArray();
    DialogFragment dialog = OKDialogFragment.newInstance(message);
    dialog.show(getFragmentManager(), "OKDialogFragmentTag");
}

有什么办法可以告诉我的URLConnection启用Javascript吗?我使用的服务器是托管站点(Byethost),仅用于测试。

1 个答案:

答案 0 :(得分:0)

我认为我收到的消息可能是一个红色的鲱鱼,因为无论Javascript是否启用,我都可以使用WebView正确地恢复数据。我仍然不知道为什么我的代码不起作用(我尝试了弃用的apache.org.http。*和java.net。*,使用与WebView相同的url),但我可以工作使用WebView的替代解决方案,这就是我要做的。