2013-03-02 105 views
2

我敢尝试创建一个aplication本网站http://www.reclameaqui.com.br/ 登录,当我把我的用户名和密码,该aplication告诉我这一点:登录与HTTP POST网站

03-01 22: 34:47.220:W/SENCIDE(27717):403禁止

禁止

您无权访问此服务器上的/ areadoconsumidor /。


Apache/2.2.15(CentOS)Server at www.reclameaqui.com.br Port 80 package com.sencide;

这是代码

package com.sencide; 

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.util.ArrayList; 
import java.util.List; 

import org.apache.http.HttpResponse; 
import org.apache.http.NameValuePair; 
import org.apache.http.client.ClientProtocolException; 
import org.apache.http.client.HttpClient; 
import org.apache.http.client.entity.UrlEncodedFormEntity; 
import org.apache.http.client.methods.HttpPost; 
import org.apache.http.impl.client.DefaultHttpClient; 
import org.apache.http.message.BasicNameValuePair; 

import android.app.Activity; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 

public class AndroidLogin extends Activity implements OnClickListener { 

    Button ok,back,exit,site; 
    TextView result; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

    // Login button clicked 
     site = (Button)findViewById(R.id.button1); 
     site.setOnClickListener(this); 


     // Login button clicked 
     ok = (Button)findViewById(R.id.btn_login); 
     ok.setOnClickListener(this); 

     result = (TextView)findViewById(R.id.lbl_result); 

    } 

    public void postLoginData() { 
     // Create a new HttpClient and Post Header 
     HttpClient httpclient = new DefaultHttpClient(); 

     /* logar no site */ 
     HttpPost httppost = new HttpPost("http://www.reclameaqui.com.br/includes/autenticaUsuario.php"); 

     try { 
      // Add user name and password 
      EditText uname = (EditText)findViewById(R.id.txt_username); 
      String username = uname.getText().toString(); 

      EditText pword = (EditText)findViewById(R.id.txt_password); 
      String password = pword.getText().toString(); 

      List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(6); 
      nameValuePairs.add(new BasicNameValuePair("identificador", username)); 
      nameValuePairs.add(new BasicNameValuePair("senha", password)); 
      nameValuePairs.add(new BasicNameValuePair("urlRedir", "http://www.reclameaqui.com.br/areadoconsumidor/")); 
      nameValuePairs.add(new BasicNameValuePair("tipo", "cadastro")); 
      nameValuePairs.add(new BasicNameValuePair("x", "35")); 
      nameValuePairs.add(new BasicNameValuePair("y", "24")); 
      httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

      // Execute HTTP Post Request 
      Log.w("SENCIDE", "Execute HTTP Post Request"); 
      HttpResponse response = httpclient.execute(httppost); 

      String str = inputStreamToString(response.getEntity().getContent()).toString(); 
      Log.w("SENCIDE", str); 

      if(str.toString().equalsIgnoreCase("true")) 
      { 
       Log.w("SENCIDE", "TRUE"); 
       result.setText("Login successful"); 
      }else 
      { 
       Log.w("SENCIDE", "FALSE"); 
       result.setText(str);     
      } 

     } catch (ClientProtocolException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 

    private StringBuilder inputStreamToString(InputStream is) { 
     String line = ""; 
     StringBuilder total = new StringBuilder(); 
     // Wrap a BufferedReader around the InputStream 
     BufferedReader rd = new BufferedReader(new InputStreamReader(is)); 
     // Read response until the end 
     try { 
      while ((line = rd.readLine()) != null) { 
       total.append(line); 
      } 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     // Return full string 
     return total; 
    } 

    @Override 
    public void onClick(View view) { 
     if(view == ok){ 
      postLoginData(); 
     } 
    } 

} 

什么我可以做应用程序的伟大工程?谁来帮帮我;

回答

1

它看起来像你张贴到错误的页面。

<form action="includes/autenticaUsuario.php" method="post" onsubmit="return valida_form(this)">

形式出现张贴到http://www.reclameaqui.com.br/includes/autenticaUsuario.php

它还隐藏字段:<input type="hidden" name="urlRedir" value="http://www.reclameaqui.com.br/areadoconsumidor/">

<input type="hidden" name="tipo" value="cadastro">

其次,用户名输入命名<input type="text" name="identificador">和密码输入被命名为<input type="password" name="senha">,所以我相信你BasicNamveValuePairs应该更喜欢这个:new BasicNameValuePair("identificador", identificador)new BasicNameValuePair("senha", senha)


这也许应该是这个样子:

List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(4); 
nameValuePairs.add(new BasicNameValuePair("tipo", "cadastro")); 
nameValuePairs.add(new BasicNameValuePair("urlRedir", "http://www.reclameaqui.com.br/areadoconsumidor/")); 
nameValuePairs.add(new BasicNameValuePair("identificador", identificador)); 
nameValuePairs.add(new BasicNameValuePair("senha", senha)); 
+0

我按照你的提示,我得到了同样的错误,我编辑我的文章与新代码 – user2125667 2013-03-02 03:14:54

+0

@ user2125667它看起来不像你添加隐藏的领域。您应该将它们作为两个BasicNameValuePairs添加到httppost。 – Ngenator 2013-03-02 04:56:23

+0

另外,我的信息中有一个错字。第二个BasicNamveValuePair的密码应该是'新的BasicNameValuePair(“senha”,senha)' – Ngenator 2013-03-02 05:05:41

0

插入一个中间HTTP代理服务器,或使用某种形式的HTTP调试的,这样就可以比较后的网址,并从工作登录张贴的所有数据与您的程序登录。这将指出一些问题。

+0

你能帮我吗? – user2125667 2013-03-02 03:57:54

+0

请参阅http://stackoverflow.com/questions/1617536/http-debugging-proxy-for-linux-and-mac或关于如何设置代理的其他网页。然后将代理配置为指向目标网站,并将您的webapp更改为指向代理。或者,只需使用tcpdump/wireshark来捕获/呈现HTTP流量。 – jarmod 2013-03-02 04:05:39

+0

我使用一个http流量,我得到它与另一个网站,但与reclameaqui工作。不起作用 – user2125667 2013-03-02 16:32:59