Веб-запрос HTTP C # держит время ожидания

== проверяет ссылки на объекты, .equals() проверяет строковые значения.

Иногда кажется, что == сравнивает значения, потому что Java делает некоторые закулисные вещи, чтобы убедиться, что одинаковые строки в строке являются одним и тем же объектом.

Для Например:

String fooString1 = new String("foo");
String fooString2 = new String("foo");

// Evaluates to false
fooString1 == fooString2;

// Evaluates to true
fooString1.equals(fooString2);

// Evaluates to true, because Java uses the same object
"bar" == "bar";

Но будьте осторожны с нулями!

== обрабатывает строки null в порядке, но вызов .equals() из пустой строки приведет к исключению:

String nullString1 = null;
String nullString2 = null;

// Evaluates to true
System.out.print(nullString1 == nullString2);

// Throws a NullPointerException
System.out.print(nullString1.equals(nullString2));

Итак, если вы знаете, что fooString1 может но не менее очевидно, что он проверяет значение null (из Java 7):

System.out.print(Objects.equals(fooString1, "bar"));
11
задан Peter Mortensen 3 January 2010 в 09:35
поделиться

1 ответ

Вы не закрываете свой веб-ответ - если вы обнаружили, что первая пара запросов работает, а последующие нет, то в этом и проблема. Он пытается повторно использовать существующее соединение с сервером, но не может, потому что вы не закрыли ответ.

Измените код на:

using (HttpWebResponse webresponse = (HttpWebResponse) myRequest.GetResponse())
{
    if (webresponse.StatusCode == HttpStatusCode.OK)
    {
        continue;
    }
    ...
}

и посмотрите, помогает ли это.

Если он не работает при первом же запросе к серверу , то это что-то другое. В этом случае используйте Wireshark, чтобы посмотреть, что происходит на сетевом уровне.

Обратите внимание, что в приведенном выше коде я также удалил преобразование строки в пользу прямого сравнения кодов статуса.

.
32
ответ дан 3 December 2019 в 02:30
поделиться
Другие вопросы по тегам:

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