我正在编写一个需要访问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),仅用于测试。
答案 0 :(得分:0)
我认为我收到的消息可能是一个红色的鲱鱼,因为无论Javascript是否启用,我都可以使用WebView正确地恢复数据。我仍然不知道为什么我的代码不起作用(我尝试了弃用的apache.org.http。*和java.net。*,使用与WebView相同的url),但我可以工作使用WebView的替代解决方案,这就是我要做的。