2016-08-25 5 views
1

Ich verwende Apache HttpClient auf einer Maschine, die zwei Netzwerkkarten hat. Ich kann nicht finden, wie ich HttpClient binden kann, um nur einen der NICs zu verwenden. Ich habe einige Lösungen gefunden, aber sie sind jetzt alle abgeschrieben. Ich verwende Apache HttpClient 4.5.2verbindliche Netzwerkschnittstelle zu Apache httpclient

Gibt es Beispiele, die GET/POST-Anfragen verwenden, während NIC-Bindung verwendet?

Antwort

1

Arya, Sie müssen die Liste der Netzwerkschnittstellen abrufen und die RequestBuilder-Schnittstellen verwenden, um dies zu erreichen. Das Folgende wird Ihnen eine grobe Vorstellung geben.

import java.net.InetAddress; 
import java.net.NetworkInterface; 
import java.util.Enumeration; 

import org.apache.http.client.config.RequestConfig; 
import org.apache.http.client.methods.CloseableHttpResponse; 
import org.apache.http.client.methods.HttpGet; 
import org.apache.http.impl.client.CloseableHttpClient; 
import org.apache.http.impl.client.HttpClients; 

public static void main(String[] args) throws Exception { 

    //Enumeration<NetworkInterface> nifs = NetworkInterface.getNetworkInterfaces(); 
    /*if (nifs == null) { 
     System.err.println("Error getting the Network Interface"); 
     return; 
    }*/ 
    //A specific network interface can be obtained using getByName 

    NetworkInterface nif = NetworkInterface.getByName("sup0"); 
    System.out.println("Starting to using the interface: " + nif.getName()); 
    Enumeration<InetAddress> nifAddresses = nif.getInetAddresses(); 



    RequestConfig config = RequestConfig.custom() 
      .setLocalAddress(nifAddresses.nextElement()).build(); 
    HttpGet httpGet = new HttpGet("http://localhost:8080/admin"); 
    httpGet.setConfig(config); 
    CloseableHttpClient httpClient = HttpClients.createDefault(); 
    try { 
     CloseableHttpResponse response = httpClient.execute(httpGet); 
     try { 
      //logic goes here 
     } finally { 
      response.close(); 
     } 
    } finally { 
     httpClient.close(); 
    } 
} 
Verwandte Themen