【问题标题】:Can't get data from MySql with using php to Android?使用 php 到 Android 无法从 MySql 获取数据?
【发布时间】:2012-08-27 05:00:52
【问题描述】:

我创建了一个应用程序,它使用 php 从 mysql 获取数据。但是当我从我的 android 应用程序调用 php 文件时,我的 LogCat 窗口中出现了以下内容。

08-26 21:07:57.748: V/(1036): Response : org.apache.http.message.BasicHttpResponse@44f8b018
08-26 21:07:57.758: V/(1036): Entity : org.apache.http.conn.BasicManagedEntity@44f8c730
08-26 21:07:57.839: V/(1036): Result : <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
08-26 21:07:57.839: V/(1036): <html><head>
08-26 21:07:57.839: V/(1036): <title>403 Forbidden</title>
08-26 21:07:57.839: V/(1036): </head><body>
08-26 21:07:57.839: V/(1036): <h1>Forbidden</h1>
08-26 21:07:57.839: V/(1036): <p>You don't have permission to access /PHP/getAllPeopleBornAfter.php
08-26 21:07:57.839: V/(1036): on this server.</p>
08-26 21:07:57.839: V/(1036): </body></html>

但是当我使用 wamp 服务器运行 .php 时,它可以成功获取数据。我不明白我在哪里犯了错误。

以下是我的安卓代码

ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("year","1980"));

try{
    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost("http://10.167.122.24 /PHP/  getAllPeopleBornAfter.php");
    httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
    HttpResponse response = httpclient.execute(httppost);
    HttpEntity entity = response.getEntity();
    InputStream is = entity.getContent();

    Log.v("","Response : "+response);
    Log.v("","Entity : "+entity);
    BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
    StringBuilder sb = new StringBuilder();
    String line = null;

    while ((line = reader.readLine()) != null) {
        sb.append(line + "\n");
    }
    is.close();
    result=sb.toString();
    Log.v("","Result : "+result);
}catch(Exception e){
    Log.v("log_tag", "Error in http connection "+e);
}

请给我一些想法。先感谢您。

【问题讨论】:

  • 你的服务器有htaccess认证吗?
  • 感谢您的建议,但请告诉我在哪里可以找到 htaccess 身份验证。我在本地机器上使用了 wamp 服务器。等待你的重播…………
  • 当您在浏览器中打开此网址时,如果您的服务器具有 htaccess 身份验证,它将要求您提供凭据..

标签: php android mysql http-status-code-403


【解决方案1】:

1) 以下是相关信息:

You don't have permission to access /PHP/getAllPeopleBornAfter.php

2) 这来自您的 Windows 服务器。

您有权从您的 Android 手机“接触”互联网。

3) 您没有授予远程客户端权限(不仅是 Android,而是任何网络上任何其他 PC 上的网络浏览器()访问文件.

建议:

4) 检查您的 Web 服务器根目录的 httpd.conf 和/或 .htaccess 权限。

这是一个很好的链接和一个很好的例子:

【讨论】:

  • 非常感谢您重播我。但是请您简要告诉我,我可以在 Web 服务器根目录中的何处找到 htaccess 权限。我有使用 wamp 服务器。
  • @alex_android_dev - 我会在你的 http.conf 文件中以&lt;Directory&gt; 开头。有许多链接可以解释它,包括我引用的链接和 WAMP 文档。祝你好运!
【解决方案2】:

您的错误日志显示您忘记在 AndroidManifest.xml 中提供 Internet 权限,

只需在您的AndroidManifest.xml 文件中写入以下权限即可。

<uses-permission android:name="android.permission.INTERNET"></uses-permission>

【讨论】:

  • 真的吗?确定 403 是从服务器返回的,而不是在 Android 中生成的?
  • @therefromhere - 你是绝对正确的。这来自服务器的错误403。 Android 已成功连接到 WAMP 服务器。
  • 是的,而且我已经将该权限放入我的 androidmanifest
【解决方案3】:

检查您的 Android 清单中是否有互联网权限:

<uses-permission android:name="android.permission.INTERNET" />

【讨论】:

  • 是的,我已经将该权限放入我的 androidmanifest.xml
  • 啊,对不起:/而且我没有看到有人也发布了这个答案。我想我们是同时发布的 ><...>
猜你喜欢
  • 2012-01-22
  • 1970-01-01
  • 2016-09-22
  • 1970-01-01
  • 2021-12-20
  • 2011-06-16
  • 2012-12-15
  • 2016-09-06
  • 1970-01-01
相关资源
最近更新 更多