2017-08-11 64 views
0

這裏是我的代碼表示棄用的NameValuePair,BasicNameValuePair,的HttpParams,HttpClient的,DefaultHttpClient,HttpPost,UrlEncodedFormEntity 如何解決,我現在面臨這個問題...已過時的NameValuePair

 ArrayList<NameValuePair> dataTosend = new ArrayList<>(); 
     dataTosend.add(new BasicNameValuePair("image" , encodedImage)); 
     dataTosend.add(new BasicNameValuePair("name" , name)); 


     HttpParams httpRequestParams = getHttpRequestParams(); 

     HttpClient client = new DefaultHttpClient(httpRequestParams); 
     HttpPost post = new HttpPost(SERVER_ADDRESS + "savepicture.php"); 

     try{ 
      post.setEntity(new UrlEncodedFormEntity(dataTosend)); 
      client.execute(post); 
     } 
     catch (Exception e){ 
      e.printStackTrace(); 
     } 

     return null; 
    } 


} 
+1

'HttpClient'是不提倡使用的方法它不再由Google維護。如果你使用'Retrofit',你可以切換到'HttpUrlConnection'或更好。 –

+0

@ M.WaqasPervez哥哥我是初學者,所以要具體和儘可能容易,如何克服這個問題 –

回答

0

從Android6.0其去掉,如果你想使用,然後在您的build.gradle

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

添加這可是嘗試使用HttpUrlConnection,看official doc

Android 6.0版本取消了對Apache HTTP客戶端的支持。如果 您的應用正在使用此客戶端,並且目標Android 2.3(API級別9)或 更高,請改爲使用HttpURLConnection類。此API的效率更高,因爲它通過透明的壓縮和響應緩存減少了網絡使用,並最大限度地降低了功耗。要 繼續使用Apache HTTP API,您必須首先聲明 下面的編譯時依賴於你的build.gradle文件:

或者你可以使用volleyretrofit

+0

我是初學者,請你告訴如何用HttpUrlConnection替換此代碼 HttpParams httpRequestParams = getHttpRequestParams(); HttpClient client = new DefaultHttpClient(httpRequestParams); HttpPost post = new HttpPost(SERVER_ADDRESS +「savepicture.php」); –

+0

所以你想讓你使用HttpUrlConnection .. ..? –

+0

是啊! Actualy認真我不知道該怎麼做,但我想我的代碼運行 –