Android 使用 phpMyAdmin 和 Wamp 的意外代码 403
Android Unexpected Code 403 Using phpMyAdmin and Wamp
已修复,请看最下方的解决方法
首先很抱歉,如果这是重复的,请相信我,我尝试搜索是否存在现有答案...
好吧,长话短说,我正在学习本教程 (https://www.youtube.com/watch?v=wKwCgabRV2A)。我已经下载了 Wamp64 并进行了设置等,设置了我的 phpMyAdmin 数据库并创建了相关的 table 等。但是除了设置和 运行 之外我什么也没做。
我正尝试在 Android Studio 中使用以下代码将用户的令牌 ID 添加到数据库中,如下所示:
final String token = FirebaseInstanceId.getInstance().getToken();
Log.d("TAG", token); //Just to confirm the token.
StringRequest stringRequest = new StringRequest(Request.Method.POST, Config.REGISTRATION_SCRIPT_ADDRESS,
new Response.Listener<String>(){
@Override
public void onResponse(String response){
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
error.printStackTrace();
}
})
{
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> params = new HashMap<>();
params.put("user_token", token);
return params;
}
};
VolleyRequestManager.getManagerInstance(SplashActivity.this).addRequestToQueue(stringRequest);
PHP文件地址在Configclass:
public static final String REGISTRATION_SCRIPT_ADDRESS = "http://192.168.1.106/bbservice/server_token_insert.php";
但是它不起作用,我只是得到以下信息:
08-17 21:55:45.089 4206-4352/com.example.program E/Volley: [2745] BasicNetwork.performRequest: Unexpected response code 403 for http://192.168.1.106/bbservice/server_token_insert.php
08-17 21:55:45.102 4206-4352/com.example.program E/Volley: [2745] BasicNetwork.performRequest: Unexpected response code 403 for http://192.168.1.106/bbservice/server_token_insert.php
08-17 21:55:45.181 4206-4206/com.example.program W/System.err: com.android.volley.AuthFailureError
08-17 21:55:45.181 4206-4206/com.example.program W/System.err: at com.android.volley.toolbox.BasicNetwork.performRequest(BasicNetwork.java:159)
08-17 21:55:45.181 4206-4206/com.example.program W/System.err: at com.android.volley.NetworkDispatcher.run(NetworkDispatcher.java:112)
完全没有对 table 进行任何更改。
基本上我该如何解决代码 403 问题?这与我的网络权限有关吗(我 运行 在我 运行 宁 Android Studio 的同一台电脑上安装 Wamp 服务器)?如果是这样,我需要更改什么权限?还是代码问题?
注意:我正在尝试 运行 在我的实际 android 设备上执行此操作,而不是模拟器。
非常感谢任何帮助!
编辑 1:
我这里调用的PHP脚本如下:
<?php
require "server_connector.php";
$user_token = $_POST["user_token"];
$query = "INSERT INTO tokens VALUES('".$user_token."');";
mysqli_query($connection, $query);
mysqli_close($connection);
?>
服务器连接器:
<?php
$host = "localhost";
$user = "root";
$password = "";
$database = "bbservice";
$connection = mysqli_connect($host, $user, $password, $database);
if($connection){
echo "Connection Established";
}else{
echo "Connection Failed";
}
?>
它们都位于 C://Wamp64/www/BBService/ 文件夹中。
编辑 2:
好的,现在我在重新安装 wamp 后仍然遇到同样的错误...
我检查并确认 wamp apache 服务是我计算机上唯一监听端口 80 的服务。
我也试过禁用 Windows 防火墙,但还是没用...
编辑 3:
我尝试了另一种方法来使用 OkHttp 使其工作,使用此方法:
OkHttpClient client = new OkHttpClient();
RequestBody body = new FormBody.Builder().add("user_token", token).build();
Request request = new Request.Builder().url(Config.REGISTRATION_SCRIPT_ADDRESS).post(body).build();
try {
Response response = client.newCall(request).execute();
Log.d("SPLASH", "Executed request successfully.");
Log.d("SPLASH", "Response: " + response.body().string());
}catch(IOException ioex){
ioex.printStackTrace();
}
啊啊我得到以下信息:
Response: <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access /bbservice/server_token_insert.php
this server.<br />
</p>
<address>Apache/2.4.18 (Win64) PHP/5.6.19 Server at 192.168.1.108 Port 80</address>
</body></html>
如果我在 localhost 查看 wamp 服务器信息,它清楚地指出:
Apache/2.4.18 (Win64) PHP/5.6.19 - 为 Apache 定义的端口:80
Windows 防火墙打开和关闭都会出现此错误...我可能很快就会开始扯掉头发...
@SchoolJava101 通过以上讨论,您无法将它连接到您的 wamp 服务器的原因有很多种。
确保没有其他程序冲突 Wamp,例如 IIS、Microsoft Web Deploy、SQL、Skype、Zonealarm、firewall/antivirus、NOD32、Eset,任何与 Web 相关的程序,包括 Remote Desktop、Teamviewer 或 Apache,MySQL、PHP 在 wamp 文件夹外(即在 Program Files 或 System32 文件夹中)...
IIS 和 Apache/Wamp 都是网络服务器,可能会在某些方面发生冲突,因此您必须禁用 IIS 才能使 Wamp 工作
在 Vista/W7 中禁用 IIS:
控制面板,卸载程序,打开或关闭 Widows 功能,取消选中 Internet 信息服务
在 XP 中禁用 IIS:
控制面板,Add/Remove程序,Add/RemoveWindows组件,取消选中 Internet Information Services (IIS)
重启电脑,然后重启Wamp
此外,在文件夹 C:\WINDOWS\System32\drivers\etc 中,打开文件主机并删除此文件中的所有内容,下面只有这一行,没有其他内容
127.0.0.1 本地主机
如果使用 Skype,打开 Skype > 工具 > 选项 > 高级 > 连接然后取消选中 "use port 80..." 重启 Wamp 然后 Skype
好的,所以我终于设法修复了它。首先,我完全重新安装了 Wamp。
然后我读到您需要添加特定 IP addresses/groups 以允许访问
中的文件夹
\wamp\bin\apache\apache{version}\conf\extra\httpd-vhosts.conf
文件,感谢 this。现在一切正常。感谢您尝试帮助@Lokesh!
已修复,请看最下方的解决方法
首先很抱歉,如果这是重复的,请相信我,我尝试搜索是否存在现有答案...
好吧,长话短说,我正在学习本教程 (https://www.youtube.com/watch?v=wKwCgabRV2A)。我已经下载了 Wamp64 并进行了设置等,设置了我的 phpMyAdmin 数据库并创建了相关的 table 等。但是除了设置和 运行 之外我什么也没做。
我正尝试在 Android Studio 中使用以下代码将用户的令牌 ID 添加到数据库中,如下所示:
final String token = FirebaseInstanceId.getInstance().getToken();
Log.d("TAG", token); //Just to confirm the token.
StringRequest stringRequest = new StringRequest(Request.Method.POST, Config.REGISTRATION_SCRIPT_ADDRESS,
new Response.Listener<String>(){
@Override
public void onResponse(String response){
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
error.printStackTrace();
}
})
{
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> params = new HashMap<>();
params.put("user_token", token);
return params;
}
};
VolleyRequestManager.getManagerInstance(SplashActivity.this).addRequestToQueue(stringRequest);
PHP文件地址在Configclass:
public static final String REGISTRATION_SCRIPT_ADDRESS = "http://192.168.1.106/bbservice/server_token_insert.php";
但是它不起作用,我只是得到以下信息:
08-17 21:55:45.089 4206-4352/com.example.program E/Volley: [2745] BasicNetwork.performRequest: Unexpected response code 403 for http://192.168.1.106/bbservice/server_token_insert.php
08-17 21:55:45.102 4206-4352/com.example.program E/Volley: [2745] BasicNetwork.performRequest: Unexpected response code 403 for http://192.168.1.106/bbservice/server_token_insert.php
08-17 21:55:45.181 4206-4206/com.example.program W/System.err: com.android.volley.AuthFailureError
08-17 21:55:45.181 4206-4206/com.example.program W/System.err: at com.android.volley.toolbox.BasicNetwork.performRequest(BasicNetwork.java:159)
08-17 21:55:45.181 4206-4206/com.example.program W/System.err: at com.android.volley.NetworkDispatcher.run(NetworkDispatcher.java:112)
完全没有对 table 进行任何更改。
基本上我该如何解决代码 403 问题?这与我的网络权限有关吗(我 运行 在我 运行 宁 Android Studio 的同一台电脑上安装 Wamp 服务器)?如果是这样,我需要更改什么权限?还是代码问题?
注意:我正在尝试 运行 在我的实际 android 设备上执行此操作,而不是模拟器。
非常感谢任何帮助!
编辑 1: 我这里调用的PHP脚本如下:
<?php
require "server_connector.php";
$user_token = $_POST["user_token"];
$query = "INSERT INTO tokens VALUES('".$user_token."');";
mysqli_query($connection, $query);
mysqli_close($connection);
?>
服务器连接器:
<?php
$host = "localhost";
$user = "root";
$password = "";
$database = "bbservice";
$connection = mysqli_connect($host, $user, $password, $database);
if($connection){
echo "Connection Established";
}else{
echo "Connection Failed";
}
?>
它们都位于 C://Wamp64/www/BBService/ 文件夹中。
编辑 2:
好的,现在我在重新安装 wamp 后仍然遇到同样的错误... 我检查并确认 wamp apache 服务是我计算机上唯一监听端口 80 的服务。
我也试过禁用 Windows 防火墙,但还是没用...
编辑 3: 我尝试了另一种方法来使用 OkHttp 使其工作,使用此方法:
OkHttpClient client = new OkHttpClient();
RequestBody body = new FormBody.Builder().add("user_token", token).build();
Request request = new Request.Builder().url(Config.REGISTRATION_SCRIPT_ADDRESS).post(body).build();
try {
Response response = client.newCall(request).execute();
Log.d("SPLASH", "Executed request successfully.");
Log.d("SPLASH", "Response: " + response.body().string());
}catch(IOException ioex){
ioex.printStackTrace();
}
啊啊我得到以下信息:
Response: <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access /bbservice/server_token_insert.php
this server.<br />
</p>
<address>Apache/2.4.18 (Win64) PHP/5.6.19 Server at 192.168.1.108 Port 80</address>
</body></html>
如果我在 localhost 查看 wamp 服务器信息,它清楚地指出:
Apache/2.4.18 (Win64) PHP/5.6.19 - 为 Apache 定义的端口:80 Windows 防火墙打开和关闭都会出现此错误...我可能很快就会开始扯掉头发...
@SchoolJava101 通过以上讨论,您无法将它连接到您的 wamp 服务器的原因有很多种。
确保没有其他程序冲突 Wamp,例如 IIS、Microsoft Web Deploy、SQL、Skype、Zonealarm、firewall/antivirus、NOD32、Eset,任何与 Web 相关的程序,包括 Remote Desktop、Teamviewer 或 Apache,MySQL、PHP 在 wamp 文件夹外(即在 Program Files 或 System32 文件夹中)...
IIS 和 Apache/Wamp 都是网络服务器,可能会在某些方面发生冲突,因此您必须禁用 IIS 才能使 Wamp 工作
在 Vista/W7 中禁用 IIS:
控制面板,卸载程序,打开或关闭 Widows 功能,取消选中 Internet 信息服务
在 XP 中禁用 IIS:
控制面板,Add/Remove程序,Add/RemoveWindows组件,取消选中 Internet Information Services (IIS)
重启电脑,然后重启Wamp
此外,在文件夹 C:\WINDOWS\System32\drivers\etc 中,打开文件主机并删除此文件中的所有内容,下面只有这一行,没有其他内容
127.0.0.1 本地主机
如果使用 Skype,打开 Skype > 工具 > 选项 > 高级 > 连接然后取消选中 "use port 80..." 重启 Wamp 然后 Skype
好的,所以我终于设法修复了它。首先,我完全重新安装了 Wamp。 然后我读到您需要添加特定 IP addresses/groups 以允许访问
中的文件夹\wamp\bin\apache\apache{version}\conf\extra\httpd-vhosts.conf
文件,感谢 this。现在一切正常。感谢您尝试帮助@Lokesh!