2013-05-21 45 views
9

Điều tôi đang cố làm là gửi ảnh đến máy chủ web. Khi tôi gọi một phương thức trong dự án Android của mình, tôi nhận được lỗi sau: không thể tìm thấy lớp 'org.apache.http.entity.mime.content.Filebody', được tham chiếu từ phương thức com.example.tc.Send.send.Không thể tìm thấy lớp 'org.apache.http.entity.mime.content.Filebody', được tham chiếu từ phương thức

Điều này xảy ra dù cho tôi đã có hàng nhập khẩu như sau:

import org.apache.http.HttpEntity; 
import org.apache.http.HttpResponse; 
import org.apache.http.client.HttpClient; 
import org.apache.http.client.methods.HttpPost; 
import org.apache.http.entity.mime.MultipartEntity; 
import org.apache.http.entity.mime.content.FileBody; 
import org.apache.http.impl.client.DefaultHttpClient; 

Đây là những gì trông giống như lớp trong đó phương pháp này nằm:

public class Send { 
public Send(){ 
} 

public static String send(String path) throws Exception { 
    String filePath = path; 
    String svar; 

    HttpClient httpclient = new DefaultHttpClient(); 
    try { 
     HttpPost httppost = new HttpPost("path to web server"); 
     FileBody pic = new FileBody(new File(filePath)); 
     MultipartEntity requestEntity = new MultipartEntity(); 
     requestEntity.addPart("file", pic); 

     httppost.setEntity(requestEntity); 
     System.out.println("executing request " + httppost.getRequestLine()); 
     HttpResponse response = httpclient.execute(httppost); 
     HttpEntity responseEntity = response.getEntity(); 
     System.out.println("----------------------------------------"); 
     System.out.println(response.getStatusLine()); 

     ByteArrayOutputStream outstream = new ByteArrayOutputStream(); 
     response.getEntity().writeTo(outstream); 
     byte [] responseBody = outstream.toByteArray(); 
     svar = new String(responseBody); 
     System.out.println(svar); 

    } finally { 
     try { 
      httpclient.getConnectionManager().shutdown(); 
     } 
     catch (Exception ignore) { 
     } 
    } 
    return svar; 
} 
} 

bất cứ ai có thể thấy vấn đề là gì?

+0

Bạn có chắc chắn bao gồm nó trong đường dẫn java xây dựng? –

+0

bạn đã tìm thấy câu trả lời chưa? –

+0

Bạn đang sử dụng proguard? –

Trả lời

4

Bạn cần có httpmime-4.0.jar trong đường dẫn lớp của mình. Bạn có thể (tôi đoán bạn làm) có jar này vào dự án của bạn, nhưng nó là bên trong ứng dụng của bạn trong thời gian chạy? Nếu tôi hiểu chính xác bạn nhận được điều này từ ứng dụng Android. Bạn cần phải có jar này inthe classpath của Android của bạn.

+0

tiền thưởng được cấp ... –

+0

bạn nên đánh dấu câu trả lời này là câu trả lời chính xác – whyoz

0

Tải xuống tệp jar Apache HttpComponents từ liên kết này http://hc.apache.org/downloads.cgi và tạo thư mục/libs trong thư mục dự án Android của bạn và sao chép tệp JAR vào thư mục đó. thêm nó vào dự án của bạn bằng cách nhấp vào thuộc tính Project cho dự án Android của bạn và sau đó chọn Java Build Path settings, chọn tab Libraries và nhấn nút Add JAR và chọn jar trong thư mục/libs.

0

Bạn cũng có thể có được những tập tin từ gói ADT Eclipse mà không cần phải tải chúng riêng rẽ - xem câu trả lời ở đây:

https://stackoverflow.com/a/27906193/334402

Lưu ý rằng bạn sẽ nhận được lỗi các poster ban đầu gắn cờ, tức là ' Không thể tìm thấy lớp 'org.apache.http.entity.mime.content.Filebody', nếu bạn chỉ thêm các tệp JAR bên ngoài vào đường dẫn xây dựng của mình, nhưng cũng quên nhập lưu trữ vào dự án của bạn.

3

Thêm hai phụ thuộc những

compile "org.apache.httpcomponents:httpcore:4.2.4" 
compile "org.apache.httpcomponents:httpmime:4.3" 
Các vấn đề liên quan