IdHttp: ошибка 10053 при отправке логина

Независимо от того, что я делаю или пытаюсь, я получаю сообщение об ошибке 10053 при отправке сообщения для входа на сайт. Я использую приведенный ниже код для отправки параметров сообщения для входа, которые вы также можете видеть, он имеет VerificationCode который я должен сначала извлечь из страницы входа в систему, и я делаю и заменить на предыдущее значение
После отправки поста получаю ошибку 10053 (software caused connection abort) и http анализатор показывает <Request is not completed. waiting...>

Мой код:

mIdHttp := TIdHTTP.Create(nil);
mIdHttp.AllowCookies := true;
mIdHttp.HandleRedirects := true;
mIdHttp.Request.Charset := 'utf-8';
mIdHttp.ConnectTimeout := 2000000;

// Headers, all values are what Http Analyzer shows 
mIdHttp.Request.Host := 'apps.somesite.com';
mIdHttp.Request.Connection := 'keep-alive';
mIdHttp.Request.CacheControl := 'max-age=0';
mIdHttp.Request.UserAgent := 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36 OPR/39.0.2256.48';
mIdHttp.Request.ContentType := 'application/x-www-form-urlencoded';
mIdHttp.Request.Accept := 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8';
mIdHttp.Request.Referer := 'https://apps.somesite.com/Login';
mIdHttp.Request.AcceptEncoding := 'gzip, deflate, lzma, br';
mIdHttp.Request.AcceptLanguage := 'en-US,en;q=0.8';
mIdHttp.Request.ContentLength := 195;  

// Extracting __RequestVerificationToken from login page
rvt := getRequestVerificationToken();

// prepare request
request.add('__RequestVerificationToken=' + rvt);
request.add('UserName=someUsername');
request.add('Password=somePassword');
request.add('RememberMe=false');

// sending login post
URL := 'https://apps.somesite.com/Login';
// Error Happens At The Post Below
mIdHttp.post(URL, request, responseCode);

Вот анализатор Http post paramters:

Parameter Name              Value                                                                                                         
__RequestVerificationToken  h_9onTJNqodkc0hVa5_VVAAa0izMb9zDdVeO5hDkciunk-3I2u7PpS8OPQe-puloMo7GRtI4iwMwezU3Nv70Wk2olccJK7MbuhgPWAGGFbM1  
UserName                    someUsername                                                                                                       
Password                    somePassword                                                                                              
RememberMe                  false

За исключением адреса сайта (которым я не могу поделиться по соображениям конфиденциальности), пожалуйста, сообщите, если вам нужна дополнительная информация или мне нужно что-то проверить, я пытался изменить все виды параметров idHttp, о которых я мог думать в течение последних 3 дней, и я всегда получаю ту же ошибку

Обратите внимание: я должен упомянуть одну вещь: если включена программа Http Analyzer и я запускаю свою программу, вместо 10053 я получаю 10054 ~! но без всякого вмешательства я всегда получаю 10053.

Изменить 1:
снимок экрана с заголовком сообщения, отправляемого при входе в систему с помощью браузера

введите описание изображения здесь

снимок экрана с заголовком сообщения, которое отправляется при попытке войти с помощью idHttp.post()
введите описание изображения здесь

2 ответа

Попробуйте добавить в свой код это:

include(idhttp1.HTTPOptions,[hoKeepOrigProtocol]);

Может быть, вы находитесь за прокси. Когда за прокси, IdHTTP должен сначала подключиться к прокси. Он отключается и выдает ошибку EIdConnClosedGracefully. Тогда вы подключены и можете опубликовать свой запрос.

Пожалуйста, попробуйте это:

mIdHttp.ProxyParams.ProxyServer := ProxyServerURL;
mIdHttp.ProxyParams.ProxyPort := 80;
// if your proxy requires authentication, provide the login and password, else set BasicAuthentication to false.
mIdHttp.ProxyParams.BasicAuthentication := true; 
mIdHTTP.ProxyParams.ProxyUserName := proxylogin;
mIdHTTP.ProxyParams.ProxyPassword := proxypwd;
try
  TATDIdHttpUtility.post(mIdHttp, URL, request).rawResponseCode.SaveToFile('responseCode0.txt');
except
  on E: EIdConnClosedGracefully do
  begin
    TATDIdHttpUtility.post(mIdHttp, URL, request).rawResponseCode.SaveToFile('responseCode0.txt');
  end;
end;
Другие вопросы по тегам