包org.apache.http.client不存在

我正在尝试检查login凭据,但我一次又一次地得到这些错误,我已经尝试了一切。 我是新的android任何forms的帮助将不胜感激。 如果还有其他好的方法来实现,想知道如何暗示

错误

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

Solutions Collecting From Web of "包org.apache.http.client不存在"

添加到你的build.gradle:

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

或者,您改为使用HttpURLConnection class

DefaultHttpClientNameValuePair类在API级别22中被弃用,并在API级别23中被删除。

谷歌甚至拿下了他们的文件。

当文档还在运行时,它build议切换到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(); } } } 

全class代码:

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