2015-12-03 70 views
1

我通過URLXML文件發送到PHP服務器。Android中已棄用DefaultHttpClient和StringBody

昨天我改變了compiledSdkVersion從17到23

compileSdkVersion 23 
buildToolsVersion "23.0.2" 

後,我重建項目,它說我,DefaultHttpClient方法已經過時了。

這是代碼:

String sURL = "http://www.example.com/function?f=1000&"; 
String returnString; 
File fileDir = new File(getFilesDir(), "job_active"); 
fileDir.mkdirs(); 
File file = new File(fileDir,filename); 

try { 

    HttpClient httpClient = new DefaultHttpClient(); 
    HttpPost httpPost = new HttpPost(sURL); 


    MultipartEntityBuilder multipartEntity = MultipartEntityBuilder.create(); 
    //Füge die Datei zur Entity hinzu 
    multipartEntity.addPart("file", new FileBody(file)); 
    //Füge den Dateinamen hinzu 
    multipartEntity.addPart("tmp_name", new StringBody(FilewithoutExt)); 

    httpPost.setEntity(multipartEntity.build()); 

    HttpResponse response = httpClient.execute(httpPost); 
    //Bekomme die Antwort vom Server zurück 
    returnString = EntityUtils.toString(response.getEntity()); 
} catch (IOException e) { 
    e.printStackTrace(); 
    return false; 
} 

另一個棄用方法是StringBody方法。

我見過一個例子,其它線程,如:

URL url = new URL(urlString); 
     HttpURLConnection connection = (HttpURLConnection)url.openConnection(); 
     connection.setRequestMethod("POST"); 

但我不能找到一種方法來替代這兩個方法。我可以使用HttpUrlConnection併發送文件嗎?

我希望很清楚我的問題是什麼。

親切的問候!

回答

0

只需在您的應用gradle文件中將useLibrary 'org.apache.http.legacy'添加到android標記中即可。