HTTP POST возвращает ошибку: 417 “неудавшихся ожиданий”.

Конечно, я надеюсь, что это поможет.

Это функция, которую вы можете использовать для подключения двух списков

def btwn(t,s):
    t_zero = []
    t_non_zero = []
    running = 0
    if s[0]==0: #Assign the starting value
        prev_zero = True
    else:
        prev_zero = False
    for score in range(len(s)): #run the length of the lists, using the position
        #compare current score to previous score
        #if the previous and current are same, keep a running
        #total of the difference, if they change, dump that 
        #running total into the appropriate list
        if score != 0: #unless it's the first element, add to running 
            running += t[score] - t[score - 1]
        if (s[score] == 0 and prev_zero) or (s[score] != 0 and not prev_zero): 
        #unchanged, add to running
            continue    
        elif s[score] == 0: #changed to zero from non-zero
            prev_zero = True
            t_non_zero.append(running)
            running = 0
        else: #changed to non-zero from zero
            prev_zero = False
            t_zero.append(running)
            running = 0
    if prev_zero: #add the final value to one of the two lists
        t_zero.append(running)
    else:
        t_non_zero.append(running)
    return t_zero, t_non_zero #return the lists

Эта функция принимает 2 списка и возвращает 2 списка.

Функция начинается с текущего вычисленного числа в нуле, считывает первое значение списка из s, чтобы решить, начинаем ли мы с нуля, или нет, а затем последовательно просматривает каждое значение в списке. Он добавляет промежуточный итог на каждой итерации в зависимости от времени t между этим элементом и предыдущим. Если значение переключается с нуля на ненулевое значение или наоборот, оно сбрасывает промежуточную сумму в соответствующий список и сбрасывает промежуточную сумму.

Я протестировал его, и эта функция вернула нужные вам списки, хотя первый ненулевой элемент на самом деле равен 50, а не 40. Значение s равно non_zero для первых 5 последовательных периодов по 10 секунд, и это не до шестого элемента, который меняется на ноль. Несмотря на то, что первый элемент имеет время = 0, он по-прежнему не равен нулю для каждого пробела между элементами, пока вы не соберете следующее изменение оценки в элементе 6.

Вы можете вызвать функцию и затем назначить ее нужным спискам вывода, если хотите

#example 
t_zero, t_non_zero = btwn(t,s)
209
задан Saeb Amini 31 May 2016 в 06:44
поделиться

2 ответа

Система. Сеть. HttpWebRequest добавляет, что заголовок 'HTTP-заголовок "Ожидает: 100 - Продолжаются"' к каждому запросу, если Вы явно не спрашиваете это не к установкой это статическое свойство ко лжи:

System.Net.ServicePointManager.Expect100Continue = false;

Некоторые серверы дросселируют на том заголовке и передают обратно 417 ошибок, которые Вы видите.

Дают этому выстрел.

471
ответ дан xcud 23 November 2019 в 04:36
поделиться

Форма Вы пытаетесь эмулировать, имеют два поля, имя пользователя и пароль?

Если так, эта строка:

 postData.Add("username", "password");

не корректно.

Вам были бы нужны две строки как:

 postData.Add("username", "Moose");
postData.Add("password", "NotMoosespasswordreally");

Редактирование:

Хорошо, так как это не проблема, один способ заняться, это должно использовать что-то как Fiddler или Wireshark для наблюдения то, что отправляется в веб-сервер от браузера успешно, затем сравните это с тем, что отправляется от кода. Если Вы будете идти в обычный порт 80 из .NET, то Скрипач все еще получит этот трафик.

существует, вероятно, некоторое другое скрытое поле на форме, что веб-сервер ожидает, что Вы не отправляете.

5
ответ дан Moose 23 November 2019 в 04:36
поделиться
Другие вопросы по тегам:

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