Java Httpclient MultipartEntityBuilder в параметре HTTPS был пуст в Java 1.7 и выше
Я использую HttpClient MultipartEntityBuilder ниже код, используемый для загрузки файлов, и это работает в java для всех версий, если мой URL-адрес HTTP.
Эта программа не выдает никаких ошибок во время работы и работает в версии Java 1.6, а также в HTTPS.
Предположим, что если я изменил свой URL с HTTP на HTTPS, этот код не работает в Java 1.7 и выше. мы используем подписанный CR сертификат SSL. Я запустил эту программу в Java 1.7 и получил пустые параметры на сервере Tomcat 6 и 7, поэтому мое приложение не может войти в систему, и ответ похож
"либо введите имя пользователя или токен аутентификации"
из-за всех параметров были восстановлены пустые значения в сервлете.
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.nio.charset.Charset;
import java.util.HashMap;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.entity.mime.content.FileBody;
import org.apache.http.entity.mime.content.StringBody;
import org.apache.http.impl.client.HttpClientBuilder;
public class FileUpload {
public static void main(String[] args) {
String desctiption = "Account ID: nagaraj_n@hotmail.com<br />" +
"User ID: efef3516a398a2f4ab96b0ef319f13ad<br />";
HashMap<String, String> params = new HashMap<String, String>();
params.put("username", "myusername");
params.put("password", "mypassword");
params.put("action", "create");
params.put("description", desctiption);
params.put("title", "Testing please avoid");
params.put("description", desctiption);
String line = "";
String responce = "";
Charset chars = Charset.forName("UTF-8");
try {
HttpClientBuilder builder = HttpClientBuilder.create();
HttpClient httpClient = builder.build();
HttpPost httpPost = new HttpPost("**https**://myurl.com/api?");
MultipartEntityBuilder entityBuilder = MultipartEntityBuilder.create();
entityBuilder.addPart("Attachment_field", new FileBody(new File("/home/Attachment.html")));
entityBuilder.addPart("Attachment_field", new FileBody(new File("/home/Attachment1.html")));
for(Object param : params.keySet()){
System.out.println(param.toString()+" : "+params.get(param.toString()));
entityBuilder.addPart(param.toString(), new StringBody(params.get(param.toString()), "text/plain", Charset.forName( "UTF-8" )));
}
final HttpEntity entity = entityBuilder.build();
httpPost.setEntity(entity);
HttpResponse response = httpClient.execute(httpPost);
BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
while ((line = rd.readLine()) != null) {
responce += line;
System.out.println(line);
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Спасибо