【问题标题】:package org.apache.http.client does not exist [duplicate]包 org.apache.http.client 不存在 [重复]
【发布时间】:2015-10-10 23:13:17
【问题描述】:

我正在尝试检查登录凭据,但我一次又一次地收到这些错误,我已经尝试了一切。我是安卓新手 任何形式的帮助将不胜感激。如果有其他好的方法来实现相同的,想知道如何暗示

错误

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

【问题讨论】:

    标签: java android http android-studio


    【解决方案1】:

    将其添加到您的 build.gradle:

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

    或者你改用HttpURLConnection class。

    【讨论】:

    • 这对我不起作用。
    • 很好,帕特里夏干得好 :)
    • 从这里的答案:stackoverflow.com/questions/50461881/… 你还需要添加'android:usesCleartextTraffic="true"'和'' 添加到清单文件中。
    【解决方案2】:

    DefaultHttpClient 和 NameValuePair 类在 API 级别 22 中已弃用,并在 API 级别 23 中删除。

    Google 甚至为他们删除了文档。

    当文档仍然存在时,建议切换到HttpUrlConnection 以完成诸如此类的基本任务。

    这是您的 AsyncTask 的修改版本,可在 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();
                }
            }
        }
    

    全类代码:

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

    【讨论】:

      猜你喜欢
      • 2021-02-26
      • 2011-12-01
      • 1970-01-01
      • 2016-09-29
      • 2022-01-17
      • 2019-07-01
      • 2021-10-23
      • 1970-01-01
      相关资源
      最近更新 更多