2015-05-18 43 views
0

我想在我的應用程序中使用一個類。直到現在它正在使用HTTPClient類。但是現在HTTpClient類已被棄用,我需要使用URLConnection類。我想替換下面的一段代碼,但我沒有得到如何做到這一點。任何人都可以請讓我知道。如何做到這一點下面是我目前的代碼:如何使用新的URLConnection類用於HTTPClient棄用類

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); 

如何可以從HTTPClient類的URLConnection類替換上面的代碼段?

回答

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()); 

} 

欲瞭解更多詳情,請通過How to send HTTP request GET/POST in 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-與資源語句(Java的7+):

try (CloseableHttpClient httpClient = HttpClientBuilder.create().build()){ 

// use httpClient (no need to close it explicitly) 

} catch (IOException e) { 

// handle 

} 

希望它有幫助!