Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.97.9.175] |
|
Сообщ.
#1
,
|
|
|
Никак не могу разобраться, при вызове функции WinHttpSendRequest выкидывается ошибка 0x57...
WinHttpSendRequest(ASPT_HTTP::hRequest, WINHTTP_NO_ADDITIONAL_HEADERS, 0x00, post_data, (DWORD)strlen(post_data), 0x00, 0x00); Не пойму в чем проблема, при сканировании Wireshark'ом, браузер отправляет POST вот с такими данными: 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 содержится вот такие данные: 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=.. |
Сообщ.
#2
,
|
|
|
Где текст ошибки?
|
Сообщ.
#3
,
|
|
|
Цитата Где текст ошибки? В смысле текст ошибки? Есть код вида: 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 по поводу данной ошибки, то во что я нашел: ERROR_INVALID_PARAMETER 87 (0x57) The parameter is incorrect. Я не понимаю, какой параметр не тот и почему он не тот... |
Сообщ.
#4
,
|
|
|
Цитата Игорь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 В общем надо внимательно просмотреть все требования к параметрам. |
Сообщ.
#5
,
|
|
|
Цитата Игорь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. BOOL fRet = WinHttpSendRequest( hReq, L"Content-Length: 68719476735\r\n", -1L, WINHTTP_NO_REQUEST_DATA, 0, WINHTTP_IGNORE_REQUEST_TOTAL_LENGTH, pMyContent); |