2011-04-29 123 views
2

所以我在我的服务器上设置了一个小脚本,用于说明用户是否能够登录。当访问url http:server-url/username/password /时,我会得到一个返回的字符串,称为“正确”或“不正确”。Android无法访问Web服务器?

我在做什么在我的Android应用程序如下:

  HttpClient httpclient = new DefaultHttpClient(); 
      String url = "http://server-url/"+usernameText+"/"+passwordHash+"/"; 
      HttpPost httppost = new HttpPost(url); 
      ResponseHandler<String> handler = new BasicResponseHandler(); 
      try { 
       String response = httpclient.execute(httppost, handler); 
       Log.e("logged in",response); 
      } catch (ClientProtocolException e) { 
       Log.e("clientprotocolexception",e.toString()); 

     } catch (IOException e) { 
      Log.e("ioexception","error"); 
     } 

我得到一个错误:

04-29 14:31:15.728: ERROR/clientprotocolexception(9366): org.apache.http.client.HttpResponseException: FORBIDDEN 

,但网站本身工作正常,当我刚刚访问过浏览器?这些设置是否必须在服务器上的某处正确设置,还是我忘记了代码中的某些内容?

谢谢!

+0

你需要检查你的'userNameText'和'passwordHash' - 服务器说他们是不正确的,你被禁止访问该页面。我怀疑你不是正确的URL编码。 – 2011-04-29 13:54:13

+3

您正在发送一个POST请求,可能会有GET请求。 – Jcs 2011-04-29 13:55:36

+0

似乎服务器正在用http://en.wikipedia.org/wiki/HTTP_403代码进行响应。问题可能出在服务器端,而不是在你的应用程序中。或者你的应用程序没有向服务器提供足够的数据(证书,http头......)。 – OcuS 2011-04-29 13:56:50

回答

1

我正在使用Post而不是Get,JCs在我原来的问题的评论中回答了它。

1

您是否想过提供互联网许可?

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

是的,我给了它互联网许可。 – Simon 2011-04-29 15:06:40

0

使用此example来指导你通过,而不是使用URL的用户名密码和证书。

+0

比使用URL更好的是什么?我不能立即看到任何好处? (这可能是我在阅读代码时错过了一些东西?) – Simon 2011-04-29 15:22:30

+0

@Simon只是给出一个替代方案,以防万一在处理url时出现问题。 – rmcc 2011-04-29 15:34:07