【问题标题】:Android Unexpected Code 403 Using phpMyAdmin and Wamp使用 phpMyAdmin 和 Wamp 的 Android 意外代码 403
【发布时间】: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


【解决方案1】:

@SchoolJava101 通过上面的讨论,您可能无法将其连接到您的 wamp 服务器。

确保没有其他程序与 Wamp 冲突,例如 IIS、Microsoft Web Deploy、SQL、Skype、Zonealarm、防火墙/防病毒、NOD32、Eset、任何与 Web 相关的程序,包括远程桌面、Teamviewer 或 Apache、MySQL、wamp 文件夹外的 PHP(即。在 Program Files 或 System32 文件夹中)...

IIS 和 Apache/Wamp 都是 Web 服务器,可能会以某种方式发生冲突,因此您必须禁用 IIS 才能让 Wamp 工作

在 Vista/W7 中禁用 IIS:

控制面板、卸载程序、打开或关闭 Widows 功能、取消选中 Internet 信息服务

在 XP 中禁用 IIS:

控制面板,添加/删除程序,添加/删除 Windows 组件,取消选中 Internet 信息服务 (IIS)

重启电脑,然后重启 Wamp

另外,在文件夹 C:\WINDOWS\System32\drivers\etc 中,打开文件 hosts 并删除该文件中的任何内容,下面只有这一行,没有其他内容

127.0.0.1 本地主机

如果使用 Skype,打开 Skype > 工具 > 选项 > 高级 > 连接然后取消选中“使用端口 80...”重新启动 Wamp 然后 Skype

【讨论】:

    【解决方案2】:

    好的,所以我终于设法修复它。首先,我完全重新安装了 Wamp。 然后我读到您需要添加特定的 IP 地址/组以允许访问您在

    中的文件夹
    \wamp\bin\apache\apache{version}\conf\extra\httpd-vhosts.conf
    

    文件,感谢this。现在一切正常。感谢您尝试帮助@Lokesh!

    【讨论】:

    • 对引用另一个问题和答案投了赞成票。
    猜你喜欢
    • 2012-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-14
    • 2016-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多