Android意外代码403使用phpMyAdmin和Wamp


Android Unexpected Code 403 Using phpMyAdmin and Wamp

修复,请参见底部

解决方案

首先抱歉,如果这是一个重复,相信我,我试着搜索如果有一个现有的答案…

好吧,长话短说,我跟随这个教程(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