views:

1596

answers:

2

I have to use the XMLHttp object in classic ASP in order to send some data to another server via HTTP from server to server:

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)

I've been told (by the maintainer of the consuming server) that, depending on whether I use this code from Windows Server 2000 (IIS 5) or Windows Server 2003 (IIS 6), he gets Latin-1 (Windows 2000 Server) or UTF-8 (Windows Server 2003) encoded data.

I didn't find any property or method to set the character set of data I have to send. Does it depend on some Windows configuration or scripting (asp) settings?

+3  A: 

You can set the codepage used by setting the option 'SXH_OPTION_URL_CODEPAGE'

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

You should also be using the 'MSXML2.ServerXMLHTTP' object not the 'MSXML2.XMLHttp' object which is for single threaded client side apps.

Kev
+1  A: 

The answer above referring to SXH_OPTION_URL_CODEPAGE is kind of misleading. That option is not related to the encoding of the request body, which I think the question was about.

The problem with the code example in the question is the use of ":" instead of "=" in the header. It should be set as follows:

oXHttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded; charset=ISO-8859-1"

thomask