Имя: Пароль:
1C
1С v8
проблемы с передачей POST WinHttpRequest
0 alemko
 
19.11.12
17:10
Доброго времени суток!
В общем проблема в следующем:

Формируется POST на сервер в следующем ключе:

   Скрипт=Новый COMОбъект("MSScriptControl.ScriptControl");
   Скрипт.language="javascript";
   WinHttp=Новый COMОбъект("WinHttp.WinHttpRequest.5.1");
   Скрипт.AddObject("WinHttp",WinHttp);
   Скрипт.Eval("WinHttp.Option(2)=1251");
   WinHttp.Open("POST", Адрес,0);

   WinHttp.setRequestHeader("Accept","image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-ms-application, application/x-ms-xbap, application/vnd.ms-xpsdocument, application/xaml+xml, */*");
   WinHttp.setRequestHeader("Referer",адрес1);
   WinHttp.setRequestHeader("Accept-Language","ru");
   WinHttp.setRequestHeader("Accept-Encoding","gzip, deflate");
   WinHttp.setRequestHeader("User-Agent", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)");
   WinHttp.setRequestHeader("Content-Type", "multipart/form-data; boundary=" + ТелоPOST.Boundary);
   WinHttp.setRequestHeader("Host",хост);
   WinHttp.setRequestHeader("Cache-Control","no-cache");
   WinHttp.setRequestHeader("Connection","Keep-Alive");
   WinHttp.setRequestHeader("Content-Length",СтрЗаменить(ТелоPOST.РазмерФайла, " ", ""));
   WinHttp.setRequestHeader("Cookie", Куки);
   Чтение = Новый ЧтениеXML;
   Чтение.ОткрытьФайл("D:\1_test.xml",,, "windows-1251");
   Пока Чтение.Прочитать() Цикл
   Если Чтение.ТипУзла = ТипУзлаXML.Текст Тогда    
       WinHttp.Send(Чтение.Значение);
   КонецЕсли;    
   КонецЦикла;    

   СтрокаОтвета = WinHttp.ResponseText();
   Строка = toBase64(WinHttp.responseBody);
   Двоичные = Base64Значение(Строка);
   ОтветЗаявка = "D:\LOG\12312"+СтрЗаменить(СтрЗаменить(СтрЗаменить(ТекущаяДата()," ",""),":",""),".","")+".html";
   Двоичные.Записать(ОтветЗаявка);

Вроде все нормально, все в кодировке windows-1251. Но значение кириллических символов в возвращаемом контенте: Заявка
Это как видно UTF-8. Но ведь я передаю в кодировке windows-1251.
Сервер работает с 1251.

Вот ответ:

HTTP/1.1 200 OK
Date: Mon, 19 Nov 2012 09:55:11 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Cache-Control: private
Content-Type: text/html; charset=windows-1251

В чем проблема и почему так происходит?
1 alemko
 
20.11.12
08:48
Ни у кого нет мыслей по этому поводу?
2 dk
 
20.11.12
08:52
3 alemko
 
20.11.12
09:54
Читал,делал.Не помогло.

На прокси кодировка тела запроса не может меняться?
4 alemko
 
22.11.12
10:40
В общем если кому интересно, то сделал через IE, там с кодировкой проблем не возникло.
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн