来自 Android 应用程序的 HTTP POST 请求在域上被拒绝但可以使用 IP 地址工作

HTTP POST request from Android App denied on Domain but works using IP address‏

我正在尝试从我的 Android 应用向我的网络托管服务器上的 PHP 文件发送 HTTP POST 请求。

该请求包含来自应用程序的数据并在服务器上进行验证或保存,然后 PHP 文件发送 JSON 响应,该响应由 Android 设备接收,并且相应地采取行动,如登录或注册等。

现在出现的问题是,直到现在我还没有付费域,而只有托管服务。该托管服务给了我一个服务器 IP 地址来访问我上传的 Index.php 文件。

所以在我的 Android 代码中我写了 url 连接为 http://10x.xxx.xx.xx/index.php/ 并且请求和响应工作正常。

现在我已经从 Godaddy.com 购买了一个域名,我将该域名转发到我拥有的服务器 IP,当我在浏览器中打开它时,它工作得很好。因此,我将 Android 代码中发送请求的 ip 更改为 http://www.sampleurl.com/index.php/

这是我的 index.php 文件

if (isset($_POST['tag']) && $_POST['tag'] != '') {
// get tag
$tag = $_POST['tag'];
//do other authorization stuff
}
else
 echo "Access Denied";

现在的问题是,当我使用服务器 IP 地址进行连接时,它会进入 if 块并正常运行。但是当我使用域名时,它总是 returns 拒绝访问。

Logcat显示:

    03-18 02:59:08.780: E/JSON(30892): Access Deniedn
    03-18 02:59:08.780: E/JSON Parser(30892): Error parsing data        org.json.JSONException: Value Access of type java.lang.String cannot be converted to JSONObject
    03-18 02:59:08.780: W/System.err(30892): java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String org.json.JSONObject.getString(java.lang.String)' on a null object reference

现在我不知道 'Access denied' 之后是如何附加一个字母 'n' 的,也不知道为什么请求没有被正确处理。

P.S。我使用转发而不是更新域中的 NS。这可能是导致问题的原因吗?

随着 DNS 配置为转发,您的 post-请求丢失了。检查您的服务器日志。您需要将其设置为 type A 记录。