修复,请参见底部
解决方案首先抱歉,如果这是一个重复,相信我,我试着搜索如果有一个现有的答案…
好吧,长话短说,我跟随这个教程(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)
对表不做任何修改。
基本上我该如何解决代码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();
}
aaa,我得到以下结果:
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防火墙打开和关闭时…我可能很快就要开始拔头发了
好的,所以我终于设法解决了它。首先,我完全重新安装了Wamp。然后我读到你需要添加特定的IP地址/组来允许访问你的文件夹在
'wamp'bin'apache'apache{version}'conf'extra'httpd-vhosts.conf
文件,感谢这个。现在一切都很完美。谢谢你的帮助@Lokesh!
@SchoolJava101有了上面的讨论,可能有很多可能性,为什么你不能连接到你的wamp服务器
确保没有其他程序与Wamp冲突,如IIS, Microsoft Web Deploy, SQL, Skype, Zonealarm,防火墙/防病毒,NOD32, Eset,任何与Web相关的程序,包括远程桌面,Teamviewer或Apache, MySQL, PHP。在Program Files或System32文件夹)…
IIS和Apache/Wamp都是web服务器,可能会以某种方式冲突,所以你必须禁用IIS才能使Wamp工作
禁用Vista/W7中的IIS:
控制面板,卸载程序,打开或关闭寡妇功能,取消选中互联网信息服务
在XP中禁用IIS:控制面板,添加/删除程序,添加/删除Windows组件,取消选中Internet信息服务(IIS)
重启电脑,再重启Wamp
另外,在文件夹C:'WINDOWS'System32'drivers'etc中,打开文件hosts并删除此文件中的所有内容,只保留下面这一行,不保留其他内容
127.0.0.1 localhost
如果使用Skype,打开Skype>工具>选项>高级>连接,然后取消勾选"使用端口80…"重启Wamp,然后Skype