2016-08-25 10 views
1

私は2つのネットワークカードを持つマシンでApache HttpClientを使用しています。 HttpClientをバインドしてNICのうちの1つだけを使用する方法を見つけることができません。私はいくつかの解決策を見つけましたが、現在はすべて減価償却されています。 Apache HttpClientを使用しています。4.5.2Apacheへのバインディングネットワークインターフェイスhttpclient

NICバインディングの使用中にGET/POSTリクエストを使用する例はありますか?

答えて

1

Aryaの場合、ネットワークインターフェイスのリストを取得し、これを達成するためにはRequestBuilderインターフェイスを使用する必要があります。以下はあなたに大まかなカットのアイデアを与えるでしょう。

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(); 
    } 
} 
関連する問題