【发布时间】:2016-12-24 15:05:17
【问题描述】:
已修复,请看底部解决方案
首先抱歉,如果这是重复的,请相信我,我尝试搜索是否存在现有答案...
好吧,长话短说,我一直在关注本教程 (https://www.youtube.com/watch?v=wKwCgabRV2A)。我已经下载了 Wamp64 并进行了设置等,设置了我的 phpMyAdmin 数据库并创建了相关的表等。但是除了设置并运行它之外,我什么也没做。
我正在尝试在 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文件地址在Config类中:
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)
根本没有对表格进行任何更改。
基本上我该如何解决 Code 403 问题?这是否与我的网络权限有关(我在运行 Android Studio 的同一台 PC 上运行 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>
如果我查看本地主机上的 wamp 服务器信息,它清楚地表明:
Apache/2.4.18 (Win64) PHP/5.6.19 - 为 Apache 定义的端口:80 此错误发生在 Windows 防火墙打开和关闭时...我可能很快就会开始扯头发...
【问题讨论】:
-
极端的挑剔:你不要有一个'phpmyadmin'表。您在 mysql 数据库中有一个表,其中 phpmyadmin 是一个管理接口。如果你得到一个 403,那首先与 mysql 完全无关。您的 http 请求甚至没有到达您的服务器端数据库处理脚本。
-
好的,谢谢你的澄清,我现在解决了这个技术问题,并稍微澄清了这个问题(希望如此)
-
@SchoolJava101 您如何尝试将数据发送到 wamp ?您需要脚本语言将数据发送到您可以使用的 php 或 javascript 等服务器。你的 php 或 javascript 代码在哪里??
-
@SchoolJava101 我知道你需要一个脚本来将你的数据发送到 wamp
-
@Lokesh 我编辑了问题以包含脚本。
标签: php android wamp http-status-code-403