Android的DefaultHttpClient、HttpPost等被取消认证(SDK 30)



我更新了应用程序,但找不到用于上传图像的新功能。

String photoBase64 = ConvertBitmapToString(selectPhotoBitmap);
ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("image", "data:image/png;base64," + photoBase64));
nameValuePairs.add(new BasicNameValuePair("name", selectPhotoName));
Thread t = new Thread(new Runnable() {
@Override
public void run() {
try {
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(config.FTP + "upload.php");
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
httpclient.execute(httppost);
} catch (Exception e) {
e.printStackTrace();
}
}
});
t.start();

不推荐:

NameValuePair in org.apache.http has been deprecated
BasicNameValuePair(String,String) in BasicNameValuePair has been deprecated
DefaultHttpClient() in DefaultHttpClient has been deprecated
HttpPost(String) in HttpPost has been deprecated
UrlEncodedFormEntity in org.apache.http.client.entity has been deprecated
UrlEncodedFormEntity(List<? extends NameValuePair>) in UrlEncodedFormEntity has been deprecated
setEntity(HttpEntity) in HttpEntityEnclosingRequestBase has been deprecated
execute(HttpUriRequest) in HttpClient has been deprecated

我怎样才能用新的来改变它们。

您可以使用HttpURLConnectionhttps://developer.android.com/reference/java/net/HttpURLConnection或者如果您想继续使用httpclient,请添加

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

应用程序级渐变

将图像作为文件而不是base64 发送到服务器

MultipartEntityBuilder builder = MultipartEntityBuilder.create();

builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
//Here image is the absolute path of the file you want to post
FileBody fbd=new FileBody(new File(image));
builder.addPart("my_file",fbd);
for (int index = 0; index < nameValuePairs.size(); index++) {
builder.addPart(nameValuePairs.get(index).getName(),new StringBody(nameValuePairs.get(index).getValue(),ContentType.TEXT_PLAIN));
}

DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);//your url
HttpEntity entity = builder.build();
httpPost.setEntity(entity);
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
String response = httpEntity.getContent();

最新更新