我正在尝试让我的 Java 程序向以下(伪)PHP 文件发送 GET 请求:
www.domain.com/example.php
这是 PHP 脚本:
<?php
include "dbcredentials.php";
$query = "INSERT INTO accesscode (id) VALUES ('" . $_GET['auth'] . "')";
$result = mysql_query($query) or die(mysql_error()); // Check if query was successful
print ($_GET['auth']);
?>
上面的 php 是相当不言自明的。当收到 GET 请求时,它将请求的内容打印到页面,并将其添加到名为“accesscode”的表中的“ID”列中。
因此,如果输入“www.domain.com/example.php?auth=Brad+Pitt”,PHP 文件将打印 Brad Pitt 并将其添加到表“accesscode”中。
好吧,很简单。但我希望我的 Java 程序也能够发送 GET 请求。所以我设计了以下由 new phpGET().execute() 调用的函数:
public class phpGET extends AsyncTask<Void, Void, Void> {
protected Void doInBackground(Void... params) {
try {
URL url = new URL("http://domain.com/example.php?auth=David+Cameron");
URLConnection connection = url.openConnection();
connection.connect();
} catch (Exception e) {
Toast.makeText(MainActivity.this, e.toString(), Toast.LENGTH_LONG).show();
}
return null;
}
}
现在只是为了确认一下,上面的代码没有捕获错误。但由于某种原因,它一定无法将 GET 请求( http://domain.com/example.php?auth=David+Cameron )发送到 php 文件,因为调用函数后 David Cameron 没有添加到数据库中,如下所示有意为之。
我确认我拥有以下 Android list 权限:
<uses-permission android:name="android.permission.INTERNET" />
我对这个很困惑;有任何想法吗?
其他信息:我正在使用 Windows 7 x86、最新的 Android Studio 并在 Samsung Galaxy S5 上进行测试。
另请注意,我知道并且已经引起我的注意,本质上我应该使用 PDO 进行数据库访问,并且我应该采取额外的措施来防止 MySQL 注入(inject)漏洞代码充满了问题。我想向您保证,我打算在解决本文讨论的中心问题后这样做。
最佳答案
好的,
所以我不太确定这个解决方案有多好,但无论如何,它确实达到了我想要实现的目标。我能够使用以下命令成功地将 PHP GET 请求发送到 .php 文件:
public class phpGET extends AsyncTask<Void, Void, Void> {
protected Void doInBackground(Void... params) {
try {
URL url = new URL("http://www.domain.com/example.php?auth=David+Cameron");
URLConnection conn = url.openConnection();
InputStream is = conn.getInputStream();
is.close();
} catch (Exception e) {
Toast.makeText(MainActivity.this, e.toString(), Toast.LENGTH_LONG).show();
}
return null;
}
}
关于Java GET 请求 PHP URL 未发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30989117/