2012-08-27 45 views
0

我创建了一个应用程序,它使用php从mysql获取数据。但是,当我从我的Android应用程序调用PHP文件时,我将下面的内容放到了我的LogCat窗口中。使用PHP到Android无法从MySql获取数据?

08-26 21:07:57.748: V/(1036): Response : [email protected] 
08-26 21:07:57.758: V/(1036): Entity : [email protected] 
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时,它可以成功获取数据。我无法理解我犯了什么错误。

以下是我的Android代码

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); 
} 

请给我一些想法。先谢谢你。

+2

没有你的服务器有htaccess的认证? –

+0

谢谢你的建议,但你能告诉我在哪里可以找到htaccess认证。我在本地机器上使用了wamp服务器。等待你的重播......... – himAndroid

+0

当你在浏览器中打开这个URL时,它会询问你的服务器是否有htaccess认证。 –

回答

3

1)下面是相关信息:

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

2)这是从你的Windows服务器来。

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

3)你没有获准用于远程客户端(不只是Android的,但其他任何PC上的任何 Web浏览器的网络上()访问文件

建议:

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

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

+0

非常感谢你重播我。但是,请您简单地告诉我在web服务器根目录中可以找到的htaccess权限。我使用wamp服务器。 – himAndroid

+0

@alex_android_dev - 我会在你的http.conf文件中以''开头。有很多解释它的链接,包括我引用的链接和WAMP文档。祝你好运! – paulsm4

0

你的错误日志说,你已经忘了给上网权限在AndroidManifest.xml

只写按照您的AndroidManifest.xml文件权限。

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

真的吗?当然,403从服务器回来,而不是在Android内部产生? –

+0

@从此处 - 你绝对正确。这*是来自* server *的错误403。 Android已成功连接到WAMP服务器。 – paulsm4

+0

雅,我也已经把我的androidmanifest – himAndroid

0

检查,如果你在你的Android清单上网权限:

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

ya的权限,我已经把我的androidmanifest.xml – himAndroid

+0

ahh我对不起:/我也没有看到有人也发布了答案。我想我们在同一时间张贴><...我会看看其他选项,但@ paulsm4似乎很可信 – aug