2015-05-18 28 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 

} 

希望它有帮助!