2015-10-10 22 views
8

Sto provando a verificare le credenziali di accesso, ma sto ricevendo questi errori ancora e ancora, ho provato di tutto. Sono nuovo di Android Qualsiasi tipo di aiuto sarà apprezzato. Se non v'è altro buon modo per implementare stesso, vogliono sapere come implicapacchetto org.apache.http.client non esiste

errore

Error:(19, 30) error: package org.apache.http.client does not exist 
Error:(15, 23) error: package org.apache.http does not exist 
Error:(16, 23) error: package org.apache.http does not exist 
Error:(17, 23) error: package org.apache.http does not exist 
Error:(18, 30) error: package org.apache.http.client does not exist 
Error:(20, 37) error: package org.apache.http.client.entity does not exist 
Error:(21, 38) error: package org.apache.http.client.methods does not exist 
Error:(22, 35) error: package org.apache.http.impl.client does not exist 
Error:(23, 31) error: package org.apache.http.message does not exist 
Error:(79, 22) error: cannot find symbol class NameValuePair 
Error:(85, 49) error: cannot find symbol class DefaultHttpClient 
Error:(86, 21) error: cannot find symbol class HttpPost 
Error:(86, 45) error: cannot find symbol class HttpPost 
Error:(88, 44) error: cannot find symbol class UrlEncodedFormEntity 
Error:(90, 21) error: cannot find symbol class HttpResponse 
Error:(92, 21) error: cannot find symbol class HttpEntity 
Error:(105, 26) error: cannot find symbol class ClientProtocolException 
Error:Execution failed for task ':app:compileDebugJavaWithJavac'. 
> Compilation failed; see the compiler error output for details. 
Error:(85, 21) error: cannot find symbol class HttpClient 
Error:(81, 40) error: cannot find symbol class BasicNameValuePair 
Error:(80, 40) error: cannot find symbol class BasicNameValuePair 
Error:(79, 68) error: cannot find symbol class NameValuePair  

MainActivity.java

package com.tarun.proxy_maar; 

import android.app.Dialog; 
import android.app.ProgressDialog; 
import android.content.Intent; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.EditText; 
import android.widget.Toast; 

import org.apache.http.HttpEntity; 
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 java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.io.UnsupportedEncodingException; 
import java.util.ArrayList; 
import java.util.List; 


public class MainActivity extends AppCompatActivity { 

    private EditText editTextUserName; 
    private EditText editTextPassword; 

    public static final String USER_NAME = "USERNAME"; 

    String username; 
    String password; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     editTextUserName = (EditText) findViewById(R.id.editTextUserName); 
     editTextPassword = (EditText) findViewById(R.id.editTextPassword); 
    } 

    public void invokeLogin(View view){ 
     username = editTextUserName.getText().toString(); 
     password = editTextPassword.getText().toString(); 

     login(username,password); 

    } 

    private void login(final String username, String password) { 

     class LoginAsync extends AsyncTask<String, Void, String>{ 

      private Dialog loadingDialog; 

      @Override 
      protected void onPreExecute() { 
       super.onPreExecute(); 
       loadingDialog = ProgressDialog.show(MainActivity.this, "Please wait", "Loading..."); 
      } 

      @Override 
      protected String doInBackground(String... params) { 
       String uname = params[0]; 
       String pass = params[1]; 

       InputStream is = null; 
       List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); 
       nameValuePairs.add(new BasicNameValuePair("username", uname)); 
       nameValuePairs.add(new BasicNameValuePair("password", pass)); 
       String result = null; 

       try{ 
        HttpClient httpClient = new DefaultHttpClient(); 
        HttpPost httpPost = new HttpPost(
          "http://shaadi.web44.net/hello.php"); 
        httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

        HttpResponse response = httpClient.execute(httpPost); 

        HttpEntity entity = response.getEntity(); 

        is = entity.getContent(); 

        BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"), 8); 
        StringBuilder sb = new StringBuilder(); 

        String line = null; 
        while ((line = reader.readLine()) != null) 
        { 
         sb.append(line + "\n"); 
        } 
        result = sb.toString(); 
       } catch (ClientProtocolException e) { 
        e.printStackTrace(); 
       } catch (UnsupportedEncodingException e) { 
        e.printStackTrace(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
       return result; 
      } 

      @Override 
      protected void onPostExecute(String result){ 
       String s = result.trim(); 
       loadingDialog.dismiss(); 
       if(s.equalsIgnoreCase("success")){ 
        Intent intent = new Intent(MainActivity.this, UserProfile.class); 
        intent.putExtra(USER_NAME, username); 
        finish(); 
        startActivity(intent); 
       }else { 
        Toast.makeText(getApplicationContext(), "Invalid User Name or Password", Toast.LENGTH_LONG).show(); 
       } 
      } 
     } 

     LoginAsync la = new LoginAsync(); 
     la.execute(username, password); 

    } 


    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.menu_main, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 

     //noinspection SimplifiableIfStatement 
     if (id == R.id.action_settings) { 
      return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 
} 

risposta

35

aggiungere che, per il vostro build.gradle:

android { 
    useLibrary 'org.apache.http.legacy' 
} 

Oppure utilizzare lo HttpURLConnection class.

+0

Non funziona per me. – MrIndomitable

5

I DefaultHttpClient e NameValuePair classi sono stati deprecati a livello di API 22, e rimossi nel livello di API 23.

Google anche preso giù la documentazione per loro.

Quando la documentazione era ancora attiva, si consigliava di passare a HttpUrlConnection per attività di base come questa.

Ecco una versione modificata del vostro AsyncTask che funziona a livello di API 23:

class LoginAsync extends AsyncTask<String, Void, String>{ 

     private Dialog loadingDialog; 
     String url = "http://shaadi.web44.net/hello.php"; 

     String charset = "UTF-8"; 
     HttpURLConnection conn; 
     DataOutputStream wr; 
     StringBuilder result = new StringBuilder(); 
     URL urlObj; 
     JSONObject jObj = null; 
     StringBuilder sbParams; 
     String paramsString; 

     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 
      loadingDialog = ProgressDialog.show(MainActivity.this, "Please wait", "Loading..."); 
     } 

     @Override 
     protected String doInBackground(String... params) { 
      String uname = params[0]; 
      String pass = params[1]; 

      sbParams = new StringBuilder(); 

      try { 
       sbParams.append("name").append("=") 
         .append(URLEncoder.encode(uname, charset)); 
       sbParams.append("&"); 
       sbParams.append("password").append("=") 
         .append(URLEncoder.encode(pass, charset)); 
      } catch (UnsupportedEncodingException e) { 
       e.printStackTrace(); 
      } 

      try { 
       urlObj = new URL(url); 

       conn = (HttpURLConnection) urlObj.openConnection(); 

       conn.setDoOutput(true); 

       conn.setRequestMethod("POST"); 

       conn.setRequestProperty("Accept-Charset", charset); 

       conn.setReadTimeout(10000); 
       conn.setConnectTimeout(15000); 

       conn.connect(); 

       paramsString = sbParams.toString(); 

       wr = new DataOutputStream(conn.getOutputStream()); 
       wr.writeBytes(paramsString); 
       wr.flush(); 
       wr.close(); 

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

      try { 
       //response from the server 
       InputStream in = new BufferedInputStream(conn.getInputStream()); 
       BufferedReader reader = new BufferedReader(new InputStreamReader(in)); 

       String line; 
       while ((line = reader.readLine()) != null) { 
        result.append(line); 
       } 


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

      conn.disconnect(); 

      return result.toString(); 
     } 

     @Override 
     protected void onPostExecute(String result){ 
      String s = result.trim(); 
      loadingDialog.dismiss(); 
      if(s.equalsIgnoreCase("success")){ 
       Intent intent = new Intent(MainActivity.this, UserProfile.class); 
       intent.putExtra(USER_NAME, username); 
       finish(); 
       startActivity(intent); 
      }else { 
       Toast.makeText(getApplicationContext(), "Invalid User Name or Password", Toast.LENGTH_LONG).show(); 
      } 
     } 
    } 

codice della classe completa:

import android.app.Dialog; 
import android.app.ProgressDialog; 
import android.content.Intent; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.EditText; 
import android.widget.Toast; 
import org.json.JSONObject; 
import java.io.BufferedInputStream; 
import java.io.BufferedReader; 
import java.io.DataOutputStream; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.io.UnsupportedEncodingException; 
import java.net.HttpURLConnection; 
import java.net.URL; 
import java.net.URLEncoder; 

public class MainActivity extends AppCompatActivity { 

    private EditText editTextUserName; 
    private EditText editTextPassword; 

    public static final String USER_NAME = "USERNAME"; 

    String username; 
    String password; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     editTextUserName = (EditText) findViewById(R.id.editTextUserName); 
     editTextPassword = (EditText) findViewById(R.id.editTextPassword); 
    } 

    public void invokeLogin(View view){ 
     username = editTextUserName.getText().toString(); 
     password = editTextPassword.getText().toString(); 

     login(username,password); 

    } 

    private void login(final String username, String password) { 

     class LoginAsync extends AsyncTask<String, Void, String>{ 

      private Dialog loadingDialog; 
      String url = "http://shaadi.web44.net/hello.php"; 

      String charset = "UTF-8"; 
      HttpURLConnection conn; 
      DataOutputStream wr; 
      StringBuilder result = new StringBuilder(); 
      URL urlObj; 
      JSONObject jObj = null; 
      StringBuilder sbParams; 
      String paramsString; 

      @Override 
      protected void onPreExecute() { 
       super.onPreExecute(); 
       loadingDialog = ProgressDialog.show(MainActivity.this, "Please wait", "Loading..."); 
      } 

      @Override 
      protected String doInBackground(String... params) { 
       String uname = params[0]; 
       String pass = params[1]; 

       sbParams = new StringBuilder(); 

       try { 
        sbParams.append("name").append("=") 
          .append(URLEncoder.encode(uname, charset)); 
        sbParams.append("&"); 
        sbParams.append("password").append("=") 
          .append(URLEncoder.encode(pass, charset)); 
       } catch (UnsupportedEncodingException e) { 
        e.printStackTrace(); 
       } 

       try { 
        urlObj = new URL(url); 

        conn = (HttpURLConnection) urlObj.openConnection(); 

        conn.setDoOutput(true); 

        conn.setRequestMethod("POST"); 

        conn.setRequestProperty("Accept-Charset", charset); 

        conn.setReadTimeout(10000); 
        conn.setConnectTimeout(15000); 

        conn.connect(); 

        paramsString = sbParams.toString(); 

        wr = new DataOutputStream(conn.getOutputStream()); 
        wr.writeBytes(paramsString); 
        wr.flush(); 
        wr.close(); 

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

       try { 
        //response from the server 
        InputStream in = new BufferedInputStream(conn.getInputStream()); 
        BufferedReader reader = new BufferedReader(new InputStreamReader(in)); 

        String line; 
        while ((line = reader.readLine()) != null) { 
         result.append(line); 
        } 


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

       conn.disconnect(); 

       return result.toString(); 
      } 

      @Override 
      protected void onPostExecute(String result){ 
       String s = result.trim(); 
       loadingDialog.dismiss(); 
       if(s.equalsIgnoreCase("success")){ 
        Intent intent = new Intent(MainActivity.this, UserProfile.class); 
        intent.putExtra(USER_NAME, username); 
        finish(); 
        startActivity(intent); 
       }else { 
        Toast.makeText(getApplicationContext(), "Invalid User Name or Password", Toast.LENGTH_LONG).show(); 
       } 
      } 
     } 

     LoginAsync la = new LoginAsync(); 
     la.execute(username, password); 

    } 


    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.menu_main, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 

     //noinspection SimplifiableIfStatement 
     if (id == R.id.action_settings) { 
      return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 
} 
Problemi correlati