как изменить инициирующий IP в HttpWebRequest

Я запускаю это приложение на сервере, который присвоил 5 дюйм/с. Я использую HttpWebRequest для выборки некоторых данных из веб-сайта. Но когда я устанавливаю связь, я имею смочь указать который из 5 дюйм/с установить связь от. HttpWebRequest поддерживает это? Если это не делает я могу наследовать класс от него для изменения, это - поведение? Мне нужны так идеи здесь.

Мой код прямо сейчас - что-то как:

System.Net.WebRequest request = System.Net.WebRequest.Create(link);
((HttpWebRequest)request).Referer = "http://application.com";
using (System.Net.WebResponse response = request.GetResponse())
{
    StreamReader sr = new StreamReader(response.GetResponseStream());
    return sr.ReadToEnd();
}
15
задан Tudor Carean 27 July 2010 в 15:45
поделиться

1 ответ

Согласно это , нет. Возможно, вам придется перейти к использованию Sockets, где, как я знаю, вы можете выбрать локальный IP-адрес.

РЕДАКТИРОВАТЬ: вообще-то кажется, что это возможно. HttpWebRequest имеет свойство ServicePoint, которое, в свою очередь, имеет BindIPEndPointDelegate , что может быть тем, что вы ищете.

Дайте мне минутку, я собираюсь привести пример ...

HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://stackoverflow.com");

req.ServicePoint.BindIPEndPointDelegate = delegate(
    ServicePoint servicePoint,
    IPEndPoint remoteEndPoint,
    int retryCount) {

    if (remoteEndPoint.AddressFamily == System.Net.Sockets.AddressFamily.InterNetworkV6) {
        return new IPEndPoint(IPAddress.IPv6Any, 0);
    } else {
        return new IPEndPoint(IPAddress.Any, 0);
    }

};

Console.WriteLine(req.GetResponse().ResponseUri);

По сути, делегат должен вернуть IPEndPoint. Вы можете выбрать все, что хотите, но если он не может привязаться к нему, он снова вызовет делегата, до int.MAX_VALUE раз. Вот почему я включил код для обработки IPv6, поскольку IPAddress.Any - это IPv4.

Если вас не волнует IPv6, вы можете избавиться от него. Кроме того, я оставляю читателю в качестве упражнения фактический выбор IP-адреса :)

26
ответ дан 1 December 2019 в 02:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: