Как установить набор символов с помощью объекта XMLHttp для POST в классическом ASP? - PullRequest
3 голосов
/ 10 октября 2008

Я должен использовать объект XMLHttp в классическом ASP для отправки некоторых данных на другой сервер через HTTP с сервера на сервер:

sURL = SOME_URL

Set oXHttp = Server.CreateObject("Msxml2.XMLHTTP")

oXHttp.open "POST", sURL, false 
oXHttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded;charset:ISO-8859-1;"

sPost = SOME_FORM_DATA

oXHttp.send(sPost)

Мне сообщили (сопровождающий потребляющего сервера), что в зависимости от того, использую ли я этот код из Windows Server 2000 (IIS 5) или Windows Server 2003 (IIS 6), он получает Latin- Закодированные данные 1 (Windows 2000 Server) или UTF-8 (Windows Server 2003).

Я не нашел ни одного свойства или метода для установки набора символов данных, которые я должен отправлять. Зависит ли это от настроек Windows или скриптов (asp)?

Ответы [ 2 ]

6 голосов
/ 10 октября 2008

Вы можете установить используемую кодовую страницу, установив параметр 'SXH_OPTION_URL_CODEPAGE'

http://msdn.microsoft.com/en-us/library/ms763811(VS.85).aspx

Вам также следует использовать объект «MSXML2.ServerXMLHTTP», а не объект «MSXML2.XMLHttp», предназначенный для однопоточных приложений на стороне клиента.

5 голосов
/ 13 июня 2009

Ответ выше со ссылкой на SXH_OPTION_URL_CODEPAGE является своего рода вводящим в заблуждение. Эта опция не связана с кодировкой тела запроса, о которой, я думаю, был вопрос.

Проблема с примером кода в вопросе заключается в использовании «:» вместо «=» в заголовке. Это должно быть установлено следующим образом:

oXHttp.setRequestHeader «Content-Type», «application / x-www-form-urlencoded; кодировка = ISO-8859-1»

...