На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное DigiMania RSS
msm.ru
Модераторы: Oleg2004
  
    > WinHttpSendRequest error 0x57
      Никак не могу разобраться, при вызове функции WinHttpSendRequest выкидывается ошибка 0x57...

      ExpandedWrap disabled
        WinHttpSendRequest(ASPT_HTTP::hRequest, WINHTTP_NO_ADDITIONAL_HEADERS, 0x00, post_data, (DWORD)strlen(post_data), 0x00, 0x00);


      Не пойму в чем проблема, при сканировании Wireshark'ом, браузер отправляет POST вот с такими данными:

      ExpandedWrap disabled
        0000  5f 5f 56 49 45 57 53 54  41 54 45 3d 25 32 46 77   __VIEWST ATE=%2Fw
        0010  45 50 44 77 55 4b 4c 54  63 31 4d 44 59 7a 4f 44   EPDwUKLT c1MDYzOD
        0020  63 33 4e 51 39 6b 46 67  49 43 41 51 39 6b 46 67   c3NQ9kFg ICAQ9kFg
        0030  49 43 41 51 39 6b 46 67  4a 6d 44 32 51 57 41 6d   ICAQ9kFg JmD2QWAm
        0040  59 50 5a 42 59 45 41 67  45 50 44 78 59 43 48 67   YPZBYEAg EPDxYCHg
        0050  52 55 5a 58 68 30 42 5a  34 42 30 4b 48 51 75 4e   RUZXh0BZ 4B0KHQuN
        0060  47 42 30 59 4c 51 74 64  43 38 30 4c 41 67 30 4c   GB0YLQtd C80LAg0L
        0070  37 52 68 74 43 31 30 4c  33 51 75 74 43 34 49 4e   7RhtC10L 3QutC4IN
        0080  43 25 32 46 30 59 44 51  76 74 47 45 30 4c 58 52   C%2F0YDQ vtGE0LXR
        0090  67 64 47 42 30 4c 6a 51  76 74 43 39 30 4c 44 51   gdGB0LjQ vtC90LDQ
        00A0  75 39 47 4d 30 4c 33 52  69 39 47 46 49 4e 43 33   u9GM0L3R i9GFINC3
        00B0  30 4c 33 51 73 4e 43 39  30 4c 6a 51 75 53 44 52   0L3QsNC9 0LjQuSDR
        00C0  67 4e 43 77 30 4c 48 51  76 74 47 43 30 4c 33 51   gNCw0LHQ vtGC0L3Q
        00D0  75 4e 43 36 30 4c 37 51  73 69 44 51 75 39 43 25   uNC60L7Q siDQu9C%
        00E0  32 42 30 4c 72 51 76 74  43 38 30 4c 37 52 67 74   2B0LrQvt C80L7Rgt
        00F0  43 34 30 4c 4c 51 76 64  43 25 32 42 30 4c 50 51   C40LLQvd C%2B0LPQ
        0100  76 69 44 52 68 64 43 25  32 42 30 4c 66 52 6a 39   viDRhdC% 2B0LfRj9
        0110  43 35 30 59 48 52 67 74  43 79 30 4c 41 67 30 4a   C50YHRgt Cy0LAg0J
        0120  37 51 6b 4e 43 65 49 43  63 6e 30 4b 44 51 6c 74   7QkNCeIC cn0KDQlt
        0130  43 55 4a 79 64 6b 5a 41  49 4e 44 77 39 6b 46 67   CUJydkZA INDw9kFg
        0140  49 65 42 32 39 75 59 32  78 70 59 32 73 46 43 45   IeB29uY2 xpY2sFCE
        0150  4e 79 65 58 42 30 4b 43  6b 37 5a 42 67 42 42 52   NyeXB0KC k7ZBgBBR
        0160  35 66 58 30 4e 76 62 6e  52 79 62 32 78 7a 55 6d   5fX0Nvbn Ryb2xzUm
        0170  56 78 64 57 6c 79 5a 56  42 76 63 33 52 43 59 57   VxdWlyZV Bvc3RCYW
        0180  4e 72 53 32 56 35 58 31  38 57 41 51 55 50 63 32   NrS2V5X1 8WAQUPc2
        0190  31 68 63 6e 52 6a 59 58  4a 6b 58 32 4e 6f 59 6d   1hcnRjYX JkX2NoYm
        01A0  39 34 61 75 25 32 42 48  50 39 6e 39 5a 54 42 35   94au%2BH P9n9ZTB5
        01B0  68 7a 59 5a 59 4c 77 4a  25 32 42 59 4a 77 38 75   hzYZYLwJ %2BYJw8u
        01C0  77 25 33 44 26 5f 5f 56  49 45 57 53 54 41 54 45   w%3D&__V IEWSTATE
        01D0  47 45 4e 45 52 41 54 4f  52 3d 30 30 43 43 45 39   GENERATO R=00CCE9
        01E0  43 30 26 5f 5f 45 56 45  4e 54 56 41 4c 49 44 41   C0&__EVE NTVALIDA
        01F0  54 49 4f 4e 3d 25 32 46  77 45 57 42 51 4b 64 39   TION=%2F wEWBQKd9
        0200  39 53 65 44 51 4b 76 72  75 71 32 43 41 4b 79 78   9SeDQKvr uq2CAKyx
        0210  65 43 52 44 77 4c 6c 70  75 50 49 44 77 4c 76 7a   eCRDwLlp uPIDwLvz
        0220  25 32 46 47 41 43 6a 64  4d 54 52 48 33 78 5a 51   %2FGACjd MTRH3xZQ
        0230  47 52 6f 77 68 4d 57 79  4e 79 4d 62 73 70 76 46   GRowhMWy NyMbspvF
        0240  32 26 55 73 65 72 4e 61  6d 65 3d 25 46 31 25 45   2&UserNa me=%F1%E
        0250  35 25 45 43 25 45 35 25  45 44 25 46 37 25 45 35   5%EC%E5% ED%F7%E5
        0260  25 45 44 25 45 41 25 45  45 31 31 26 50 61 73 73   %ED%EA%E E11&Pass
        0270  57 6f 72 64 3d 26 4c 6f  67 69 6e 3d 25 43 32 25   Word=&Lo gin=%C2%
        0280  46 35 25 45 45 25 45 34  26 78 43 72 79 70 74 3d   F5%EE%E4 &xCrypt=
        0290  39 39 39 64 66 34 63 65  37 38 62 39 36 36 64 65   999df4ce 78b966de
        02A0  31 37 61 65 65 31 64 63  38 37 31 31 31 30 34 34   17aee1dc 87111044
        02B0  26 73 6d 61 72 74 63 61  72 64 5f 69 64 3d 26 73   &smartca rd_id=&s
        02C0  6e 69 6c 73 3d                                     nils=


      Соответственно, у меня в буфере post_data содержится вот такие данные:

      ExpandedWrap disabled
        0x011D52A8  5f 5f 56 49 45 57 53 54 41 54 45 3d 25 32 46 77 45 50 44 77 55 4b 4c 54 63 31 4d 44 59 7a 4f 44 63  __VIEWSTATE=%2FwEPDwUKLTc1MDYzODc
        0x011D52C9  33 4e 51 39 6b 46 67 49 43 41 51 39 6b 46 67 49 43 41 51 39 6b 46 67 4a 6d 44 32 51 57 41 6d 59 50  3NQ9kFgICAQ9kFgICAQ9kFgJmD2QWAmYP
        0x011D52EA  5a 42 59 45 41 67 45 50 44 78 59 43 48 67 52 55 5a 58 68 30 42 5a 34 42 30 4b 48 51 75 4e 47 42 30  ZBYEAgEPDxYCHgRUZXh0BZ4B0KHQuNGB0
        0x011D530B  59 4c 51 74 64 43 38 30 4c 41 67 30 4c 37 52 68 74 43 31 30 4c 33 51 75 74 43 34 49 4e 43 25 32 46  YLQtdC80LAg0L7RhtC10L3QutC4INC%2F
        0x011D532C  30 59 44 51 76 74 47 45 30 4c 58 52 67 64 47 42 30 4c 6a 51 76 74 43 39 30 4c 44 51 75 39 47 4d 30  0YDQvtGE0LXRgdGB0LjQvtC90LDQu9GM0
        0x011D534D  4c 33 52 69 39 47 46 49 4e 43 33 30 4c 33 51 73 4e 43 39 30 4c 6a 51 75 53 44 52 67 4e 43 77 30 4c  L3Ri9GFINC30L3QsNC90LjQuSDRgNCw0L
        0x011D536E  48 51 76 74 47 43 30 4c 33 51 75 4e 43 36 30 4c 37 51 73 69 44 51 75 39 43 25 32 42 30 4c 72 51 76  HQvtGC0L3QuNC60L7QsiDQu9C%2B0LrQv
        0x011D538F  74 43 38 30 4c 37 52 67 74 43 34 30 4c 4c 51 76 64 43 25 32 42 30 4c 50 51 76 69 44 52 68 64 43 25  tC80L7RgtC40LLQvdC%2B0LPQviDRhdC%
        0x011D53B0  32 42 30 4c 66 52 6a 39 43 35 30 59 48 52 67 74 43 79 30 4c 41 67 30 4a 37 51 6b 4e 43 65 49 43 63  2B0LfRj9C50YHRgtCy0LAg0J7QkNCeICc
        0x011D53D1  6e 30 4b 44 51 6c 74 43 55 4a 79 64 6b 5a 41 49 4e 44 77 39 6b 46 67 49 65 42 32 39 75 59 32 78 70  n0KDQltCUJydkZAINDw9kFgIeB29uY2xp
        0x011D53F2  59 32 73 46 43 45 4e 79 65 58 42 30 4b 43 6b 37 5a 42 67 42 42 52 35 66 58 30 4e 76 62 6e 52 79 62  Y2sFCENyeXB0KCk7ZBgBBR5fX0NvbnRyb
        0x011D5413  32 78 7a 55 6d 56 78 64 57 6c 79 5a 56 42 76 63 33 52 43 59 57 4e 72 53 32 56 35 58 31 38 57 41 51  2xzUmVxdWlyZVBvc3RCYWNrS2V5X18WAQ
        0x011D5434  55 50 63 32 31 68 63 6e 52 6a 59 58 4a 6b 58 32 4e 6f 59 6d 39 34 61 75 25 32 42 48 50 39 6e 39 5a  UPc21hcnRjYXJkX2NoYm94au%2BHP9n9Z
        0x011D5455  54 42 35 68 7a 59 5a 59 4c 77 4a 25 32 42 59 4a 77 38 75 77 25 33 44 26 5f 5f 56 49 45 57 53 54 41  TB5hzYZYLwJ%2BYJw8uw%3D&__VIEWSTA
        0x011D5476  54 45 47 45 4e 45 52 41 54 4f 52 3d 30 30 43 43 45 39 43 30 26 5f 5f 45 56 45 4e 54 56 41 4c 49 44  TEGENERATOR=00CCE9C0&__EVENTVALID
        0x011D5497  41 54 49 4f 4e 3d 25 32 46 77 45 57 42 51 4b 64 39 39 53 65 44 51 4b 76 72 75 71 32 43 41 4b 79 78  ATION=%2FwEWBQKd99SeDQKvruq2CAKyx
        0x011D54B8  65 43 52 44 77 4c 6c 70 75 50 49 44 77 4c 76 7a 25 32 46 47 41 43 6a 64 4d 54 52 48 33 78 5a 51 47  eCRDwLlpuPIDwLvz%2FGACjdMTRH3xZQG
        0x011D54D9  52 6f 77 68 4d 57 79 4e 79 4d 62 73 70 76 46 32 26 55 73 65 72 4e 61 6d 65 3d 25 46 31 25 45 35 25  RowhMWyNyMbspvF2&UserName=%F1%E5%
        0x011D54FA  45 43 25 45 35 25 45 44 25 46 37 25 45 35 25 45 44 25 45 41 25 45 45 31 31 26 50 61 73 73 57 6f 72  EC%E5%ED%F7%E5%ED%EA%EE11&PassWor
        0x011D551B  64 3d 26 4c 6f 67 69 6e 3d 25 43 32 25 46 35 25 45 45 25 45 34 26 78 43 72 79 70 74 3d 39 39 39 64  d=&Login=%C2%F5%EE%E4&xCrypt=999d
        0x011D553C  66 34 63 65 37 38 62 39 36 36 64 65 31 37 61 65 65 31 64 63 38 37 31 31 31 30 34 34 26 73 6d 61 72  f4ce78b966de17aee1dc87111044&smar
        0x011D555D  74 63 61 72 64 5f 69 64 3d 26 73 6e 69 6c 73 3d 00 00 fd fd fd fd dd dd dd dd dd c9 b8 d6 9c 94 d7  tcard_id=&snils=..
        Где текст ошибки?
        GOD IS GOOD! IN ALL THE TIME!
          Цитата
          Где текст ошибки?

          В смысле текст ошибки?

          Есть код вида:

          ExpandedWrap disabled
            if(WinHttpSendRequest(ASPT_HTTP::hRequest, WINHTTP_NO_ADDITIONAL_HEADERS, 0x00, post_data, (DWORD)strlen(post_data), 0x00, 0x00))
            {
                //////////////////////////////////////////////////////////////////////////////////////////////
            }
            else
            {
                TCHAR ErrorMessage[MAX_PATH];
                memset(ErrorMessage, '\0', MAX_PATH * sizeof(TCHAR));
             
                _stprintf_s(ErrorMessage, MAX_PATH, _T("WinHttpSendRequest()...ERROR...code: 0x%X"), GetLastError());
                                                    
                MessageBox(nullptr, ErrorMessage, _T("Отчет"), MB_OK | MB_ICONERROR);
            }


          Ну, а если пошарить в MSDN по поводу данной ошибки, то во что я нашел:

          ExpandedWrap disabled
            ERROR_INVALID_PARAMETER
            87 (0x57)
            The parameter is incorrect.


          Я не понимаю, какой параметр не тот и почему он не тот...
            Цитата Игорь98 @
            В смысле текст ошибки?

            У вас в коде стоит:
            MessageBox(nullptr, ErrorMessage, _T("Отчет"), MB_OK | MB_ICONERROR);
            В нем есть параметр ErrorMessage
            Это и есть текст ошибки
            Насколько я понимаю, у вас текст
            ERROR_INVALID_PARAMETER
            Цитата Игорь98 @
            Я не понимаю, какой параметр не тот и почему он не тот...


            Значит надо перелопатить ВСЕ парамертры вызова
            WinHttpSendRequest(ASPT_HTTP::hRequest, WINHTTP_NO_ADDITIONAL_HEADERS, 0x00, post_data, (DWORD)strlen(post_data), 0x00, 0x00);
            их тут хватает, и ошибиться в каком то запросто...
            Иногда вместо strlen в вызове надо использовать sizeof
            В общем надо внимательно просмотреть все требования к параметрам.
            Сообщение отредактировано: Oleg2004 -
            GOD IS GOOD! IN ALL THE TIME!
              Цитата Игорь98 @
              Ну, а если пошарить в MSDN по поводу данной ошибки, то во что я нашел:

              А если пошарить в гугле, по данной функции, то можно найти следующее:
              https://docs.microsoft.com/en-us/windows/de...httpsendrequest
              Цитата


              ERROR_INVALID_PARAMETER

              The content length specified in the dwTotalLength parameter does not match the length specified in the Content-Length header.

              The lpOptional parameter must be NULL and the dwOptionalLength parameter must be zero when the Transfer-Encoding header is present.

              The Content-Length header cannot be present when the Transfer-Encoding header is present.

              Ты туда передаешь (DWORD)strlen(post_data)
              strlen возвращает длину строки без учета '\0' на конце, возможно ошибка в этом. Т.е. возможно нужно передать (DWORD)strlen(post_data) + 1

              Добавлено
              Вернее даже у тебя ошибка в том, что ты не задал Content-Lenght и задал dwTotalLenght, видимо из за этого и произошла ошибка, вот пример вызова по ссылке выше:
              Цитата
              The Content-Length header can be added in the call to WinHttpAddRequestHeaders, or it can be specified in the lpszHeader parameter of WinHttpSendRequest as shown in the following code example.

              ExpandedWrap disabled
                BOOL fRet = WinHttpSendRequest(
                            hReq,
                            L"Content-Length: 68719476735\r\n",
                            -1L,
                            WINHTTP_NO_REQUEST_DATA,
                            0,
                            WINHTTP_IGNORE_REQUEST_TOTAL_LENGTH,
                            pMyContent);
              1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
              0 пользователей:


              Рейтинг@Mail.ru
              [ Script Execution time: 0,0877 ]   [ 15 queries used ]   [ Generated: 20.08.18, 20:19 GMT ]