2013-03-02 142 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