Как использовать новый класс URLConnection для устаревшего класса HTTPClient
Я пытаюсь использовать класс в моем приложении. До сих пор он работал с классом HTTPClient. Но теперь класс HTTpClient устарел, мне нужно использовать класс URLConnection. Я хочу заменить следующий фрагмент кода, но я не понимаю, как это сделать. Может кто-нибудь, пожалуйста, дайте мне знать. как это сделать ниже мой текущий код:
HttpClient httpClient = new DefaultHttpClient();
HttpContext localContext = new BasicHttpContext();
HttpPost httpPost = new HttpPost(url);
HttpResponse response = httpClient.execute(httpPost, localContext);
InputStream in = response.getEntity().getContent();
DocumentBuilder builder = DocumentBuilderFactory.newInstance()
.newDocumentBuilder();
Document doc = builder.parse(in);
Как я могу заменить вышеуказанный кусок кода классом URLConnection из класса HTTPClient?
1 ответ
Вот пример для POST:
private void sendPost() throws Exception {
String url = "your_url";
URL obj = new URL(url);
HttpsURLConnection con = (HttpsURLConnection) obj.openConnection();
//add reuqest header
con.setRequestMethod("POST");
con.setRequestProperty("User-Agent", USER_AGENT);
con.setRequestProperty("Accept-Language", "en-US,en;q=0.5");
// Send post request
con.setDoOutput(true);
DataOutputStream wr = new DataOutputStream(con.getOutputStream());
wr.writeBytes(urlParameters);
wr.flush();
wr.close();
int responseCode = con.getResponseCode();
System.out.println("\nSending 'POST' request to URL : " + url);
System.out.println("Post parameters : " + urlParameters);
System.out.println("Response Code : " + responseCode);
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
//print result
System.out.println(response.toString());
}
Для получения более подробной информации, перейдите через Как отправить HTTP-запрос GET/POST в Java.
Для всех устаревших классов посмотрите на JavaDoc, он будет подсказывать, какой класс использовать для замены старого кода. Пример:
...
*
* @deprecated (4.3) use {@link HttpClientBuilder}. <----- THE HINT IS HERE !
*/
@ThreadSafe
@Deprecated
public class DefaultHttpClient extends AbstractHttpClient {
Поэтому я предлагаю использовать
HttpClientBuilder.create().build();
Как build()
метод возвращает CloseableHttpClient
который является AutoClosable
вы можете поместить объявление в оператор try-with-resources (Java 7+):
try (CloseableHttpClient httpClient = HttpClientBuilder.create().build()){
// use httpClient (no need to close it explicitly)
} catch (IOException e) {
// handle
}
Надеюсь, поможет!