|
POST через HTTPСоединение и WinHttpRequest |
☑ |
0
Asmody
30.07.12
✎
15:58
|
сломал сегодня немножко голову. вопрос к залу:
почему вторая функция работает, а первая — нет (возвращает 400ю ошибку)?
Function __doPost8(URI, params)
request=New TextDocument;
request.addLine(params);
tmpReqFile= GetTempFileName(".request");
request.write(tmpReqFile);
tmpResFile= GetTempFileName(".response");
headers="Content-Type: application/x-www-form-urlencoded"+CRLF
+"Content-Length: "+strLen(params)+CRLF
;
HTTPConnection=New HTTPConnection(__serverFromURI(URI),,,,,__isSequre(URI));
HTTPConnection.post(tmpReqFile, __resourceFromURI(URI), tmpResFile, headers);
response=New TextDocument;
response.read(tmpResFile);
return response.getText();
EndFunction
Function __doPostWin(URI, params)
winHttp=New ComObject("WinHttp.WinHttpRequest.5.1");
winHttp.open("POST", URI, 0);
winHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
winHttp.setRequestHeader("Content-Length", strLen(params));
winHttp.send(params);
return winHttp.ResponseText();
EndFunction
|
|
1
Asmody
30.07.12
✎
16:14
|
хочется материться, взять и уе&&ть!!!
если в первой функции вместо request.write(tmpReqFile); написать request.write(tmpReqFile, TextEncoding.ANSI); то всё работает!
|
|
2
smaharbA
30.07.12
✎
16:22
|
(1) да
|
|
3
oleg_km
30.07.12
✎
16:23
|
ТекстовыйДокумент (TextDocument)
Записать (Write)
Синтаксис:
Записать(<Имя файла>, <Тип файла>, <Разделитель строк>)
Параметры:
<Имя файла> (обязательный)
Тип: Строка. Имя файла для сохранения текста.
<Тип файла> (необязательный)
Тип: КодировкаТекста, Строка. Тип кодировки файла. Тип файла может быть задан как в виде значения перечисления КодировкаТекста, так и в виде строки с указанием названия кодировки.
Написано: Необязательный
|
|
4
smaharbA
30.07.12
✎
16:24
|
(3) это тут не в тему (только опосредованно)
|
|
5
Asmody
30.07.12
✎
16:25
|
(3) по-умолчанию там utf-8. но как-бэ и на сервере utf-8. и даже как-бэ пофиг, ибо в параметрах 146% нет ничего, кроме ascii
|
|
6
oleg_km
30.07.12
✎
16:25
|
А, так значение по умолчанию: Значение по умолчанию: UTF8
Посмотри Fiddler'ом что в первом случае получается. Наверное веб-сервер не может переварить UTF
(4) Почему не в тему? А тогда что в тему?
|
|
7
oleg_km
30.07.12
✎
16:26
|
тогда только Fiddler покажет в чем разница
|
|
8
Asmody
30.07.12
✎
16:30
|
Fiddler не покажет, у меня https
|
|
9
oleg_km
30.07.12
✎
16:31
|
Сдаюсь
|
|
10
smaharbA
30.07.12
✎
17:03
|
(5) адинес утф8 файл с маркером идет
|
|
11
oleg_km
30.07.12
✎
17:16
|
(10) Точно, недавно с этим боролся, с отрезанием 0xFF 0xFE от запроса в формате UTF-8. Есть функция, но она на ADO.Stream
|
|
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший