2015-10-06 23 views
5

Tôi đang sử dụng studio android để tạo ứng dụng tạo yêu cầu GET tới máy chủ. Mã của tôi là thế này:Android Không thể truy cập org.apache.http.client.HttpClient

import org.apache.http.client.methods.CloseableHttpResponse; 
import org.apache.http.client.methods.HttpGetHC4; 
import org.apache.http.impl.client.CloseableHttpClient; 
import org.apache.http.impl.client.HttpClientBuilder; 

public class HTTPHelper 
{ 
    private String base; 

    public HTTPHelper (String base) 
    { 
     this.base = base; 
    } 

    public String doGet (String path) 
    { 
     try 
     { 
      CloseableHttpClient client = HttpClientBuilder.create().build(); 
      HttpGetHC4 get = new HttpGetHC4(path); 
      CloseableHttpResponse response = client.execute(get); 

      return ""; 
     } 
     catch (Exception e) 
     { 
      return null; 
     } 
    } 
} 

Các proiblem là Android Studio đánh dấu dòng

client.execute(get); 

với một lỗi:

enter image description here

nói "Không thể truy cập org.apache.http .client.HttpClient "

Đây là tệp gradle của tôi:

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 23 
    buildToolsVersion "23.0.0" 

    defaultConfig { 
     applicationId "principal.halloween" 
     minSdkVersion 16 
     targetSdkVersion 23 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.android.support:appcompat-v7:23.0.0' 
    compile 'com.pubnub:pubnub-android:3.7.5' 
    compile 'com.google.code.gson:gson:2.3.1' 
    compile group: 'org.apache.httpcomponents' , name: 'httpclient-android' , version: '4.3.5.1' 
    compile 'org.apache.httpcomponents:httpclient:4.3.6' 

} 
+0

bạn có thử dùng trình tạo yêu cầu không? một thiết lập hơi khác của nó so với u có. Có thể có điều gì đó sai với trình xây dựng khách hàng KHÔNG ảnh hưởng đến cùng một cách trong trường hợp của RequestBuilder.build, theo sau là 'thực thi' http://www.baeldung.com/httpclient-custom-http-header re: section 4 –

Trả lời

-1

Điều này là do HttpClient không được hỗ trợ trong sdk 23 trở đi bây giờ. Hãy thử thêm số này vào lớp học của bạn.

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

nếu điều đó không có tác dụng, chỉ cần tải xuống tệp HttpClient jar và thêm vào thư viện của bạn.

Nếu vẫn không hoạt động, bạn phải hạ cấp biên dịchSdkVersion xuống 22 hoặc thấp hơn.

+0

trước hết, bạn không tải về HttpClient gây ra rằng sẽ không làm việc, hoặc, bạn cần phải tải về httpclient-android. nhóm biên dịch: 'org.apache.httpcomponents', tên: 'httpclient-android', phiên bản: '4.3.5.1' biên dịch ('org.apache.httpcomponents: httpmime: 4.3.6') { loại trừ mô-đun : 'httpclient' } –

4

Trong SDK Android 23

HttpClient bị phản đối bởi vì nó suy luận, bạn có thể chuyển mã của bạn trong HttpURLConnection

https://developer.android.com/about/versions/marshmallow/android-6.0-changes.html#behavior-apache-http-client

Bạn có thể sử dụng điều này, nhưng nó không được khuyến khích nữa

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

Đối với số HttpURLConnection

URL url = new URL(urlString); 
HttpURLConnection connection = (HttpURLConnection)url.openConnection(); 
connection.setRequestMethod("GET"); 
connection.setDoInput(true); 
connection.connect(); 
Các vấn đề liên quan