473,372 Members | 1,016 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,372 software developers and data experts.

Msxml*.XMLHTTP vs. Microsoft.XMLHTTP

<http://www.quirksmode.org/book/printable/xmlhttp.txtshows two
alternatives to Microsoft.XMLHTTP - Msxml2.XMLHTTP and Msxml3.XMLHTTP.
If my understanding is correct, the different numbers refer to the
version of Microsoft's XML parser and that Microsoft.XMLHTTP refers to
the latest installed version.

This makes me wonder why sites like
<http://developer.apple.com/internet/webcontent/xmlhttpreq.htmlopt to
use Msxml2.XMLHTTP, first, and then use Microsoft.XMLHTTP as a
fallback. If v2 was the latest version of the XML parser,
Microsoft.XMLHTTP would refer to it just as Msxml2.XMLHTTP does. If v3
or v4 were the latest versions, Microsoft.XMLHTTP would refer to either
of those. So why give v2 preference? Wouldn't it be better to use v4
and then v3, before using v2? Wouldn't it be better just to reference
Microsoft.XMLHTTP and not Msxml*.XMLHTTP?

Nov 7 '06 #1
13 24988

yawnmoth wrote:
<http://www.quirksmode.org/book/printable/xmlhttp.txtshows two
alternatives to Microsoft.XMLHTTP - Msxml2.XMLHTTP and Msxml3.XMLHTTP.
If my understanding is correct, the different numbers refer to the
version of Microsoft's XML parser and that Microsoft.XMLHTTP refers to
the latest installed version.

This makes me wonder why sites like
<http://developer.apple.com/internet/webcontent/xmlhttpreq.htmlopt to
use Msxml2.XMLHTTP, first, and then use Microsoft.XMLHTTP as a
fallback. If v2 was the latest version of the XML parser,
Microsoft.XMLHTTP would refer to it just as Msxml2.XMLHTTP does. If v3
or v4 were the latest versions, Microsoft.XMLHTTP would refer to either
of those. So why give v2 preference? Wouldn't it be better to use v4
and then v3, before using v2? Wouldn't it be better just to reference
Microsoft.XMLHTTP and not Msxml*.XMLHTTP?
Hi

I don't know what the correct answer to this is, but you should have a
look at tbe MS XML Web Log as to the recommended ProgIDs at the moment.

<URL:http://blogs.msdn.com/xmlteam/archive/2006/10/23/using-the-right-version-of-msxml-in-internet-explorer.aspx>
Regards
Julian Turner

Nov 7 '06 #2

Julian Turner wrote:
[snip]
I don't know what the correct answer to this is, but you should have a
look at tbe MS XML Web Log as to the recommended ProgIDs at the moment.

<URL:http://blogs.msdn.com/xmlteam/archive/2006/10/23/using-the-right-version-of-msxml-in-internet-explorer.aspx>

See the following quote at the end of the above entry:-

"MSXML2 vs. Microsoft namespace - I've also seen a lot of code that
instantiates the "Microsoft.XMLHTTP" ActiveX object rather than the
MSXML2.XMLHTTP.3.0 or MSXML2.XMLHTTP.6.0 if you're using 6.0. The
"Microsoft" namespace is actually older and is only implemented in
MSXML3 for legacy support. It's unfortunate we used the "better"
name on the older version, but stick to the "msxml2" namespace when
instantiating objects."

Seems to suggest that using Microsoft.XMLHTTP is actually out of date.

Regards

Julian

Nov 7 '06 #3
VK

Julian Turner wrote:
Seems to suggest that using Microsoft.XMLHTTP is actually out of date.
Right: that is for the very first implementations of IXMLHTTPRequest so
should be used (if even used) as the last option.

For modern implementations it is Msxml library activated by
Msxml2.XMLHTTP or Msxml3.XMLHTTP etc.

As it can be very problematic to detect the current version of the
library (2?, 3?,..., 6?) Microsoft made "Msxml2.XMLHTTP" to be the
universal alias *for the current library on the given client* This way
you can use new ActiveXObject('Msxml2.XMLHTTP') and do not worry that
the current livrary version is say Msxml4

Nov 7 '06 #4
VK wrote:
For modern implementations it is Msxml library activated by
Msxml2.XMLHTTP or Msxml3.XMLHTTP etc.
There is no program id 'Msxml3.XMLHTTP'. If you want to use the client
side XMLHTTP component of MSXML 3 then the program id is
'Msxml2.XMLHTTP.3.0'. For MSXML 4 it is 'Msxml2.XMLHTTP.4.0', for MSXML
5 it is 'Msxml2.XMLHTTP.5.0', and for MSXML 6 it is 'Msxml2.XMLHTTP.6.0'.
See
<http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xmlsdk/html/e5533515-e525-4781-b68b-1ecfefdd1e89.asp>
for the MSXML 3 program ids and
<http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xmlsdk/html/5016cf75-4358-4c1f-912e-c071aa0a0991.asp>
for the introduction to that section.
As it can be very problematic to detect the current version of the
library (2?, 3?,..., 6?) Microsoft made "Msxml2.XMLHTTP" to be the
universal alias *for the current library on the given client* This way
you can use new ActiveXObject('Msxml2.XMLHTTP') and do not worry that
the current livrary version is say Msxml4
That is not true, MSXML 4 and later components can only be instantiated
with version specific program ids e.g. 'Msxml2.XMLHTTP.4.0'.
To quote from above URL:
"After you install MSXML 4.0 or later, applications that use
version-independent ProgIDs continue to run using the most recent
version of MSXML prior to version 4.0. Typically, for most current
Windows systems, this will be MSXML 3.0"

So the version independent version id 'Msxml2.XMLHTTP' is bound to MSXML
3 or earlier but never to later versions (MSXML 4 or later) even if
these are installed.
--

Martin Honnen
http://JavaScript.FAQTs.com/
Nov 7 '06 #5
VK
Martin Honnen wrote:
That is not true, MSXML 4 and later components can only be instantiated
with version specific program ids e.g. 'Msxml2.XMLHTTP.4.0'.
To quote from above URL:
"After you install MSXML 4.0 or later, applications that use
version-independent ProgIDs continue to run using the most recent
version of MSXML prior to version 4.0. Typically, for most current
Windows systems, this will be MSXML 3.0"

So the version independent version id 'Msxml2.XMLHTTP' is bound to MSXML
3 or earlier but never to later versions (MSXML 4 or later) even if
these are installed.
Right, sorry and thanks for the correction. If it is necessary to use
Microsoft XML Core Services ver.4 or above (say for specific XSLT
transformations client-side) it is necessary to use the correct ProgID.

If it is a regular ajaxoid used just to grab data / send data to the
server than the version is not important and ProgID 'Msxml2.XMLHTTP'
covers it all.

Nov 7 '06 #6

Martin Honnen wrote:
<snip>
There is no program id 'Msxml3.XMLHTTP'. If you want to use the client
side XMLHTTP component of MSXML 3 then the program id is
'Msxml2.XMLHTTP.3.0'. For MSXML 4 it is 'Msxml2.XMLHTTP.4.0', for MSXML
5 it is 'Msxml2.XMLHTTP.5.0', and for MSXML 6 it is 'Msxml2.XMLHTTP.6.0'.
If there's no Msxml3.XMLHTTP program id, I assume that means that
<http://www.quirksmode.org/book/printable/xmlhttp.txtis in error when
it references it?

Also, I assume the program id for the client side XMLHTTP component of
MSXML 1 is Microsoft.XMLHTTP?
That is not true, MSXML 4 and later components can only be instantiated
with version specific program ids e.g. 'Msxml2.XMLHTTP.4.0'.
To quote from above URL:
"After you install MSXML 4.0 or later, applications that use
version-independent ProgIDs continue to run using the most recent
version of MSXML prior to version 4.0. Typically, for most current
Windows systems, this will be MSXML 3.0"

So the version independent version id 'Msxml2.XMLHTTP' is bound to MSXML
3 or earlier but never to later versions (MSXML 4 or later) even if
these are installed.
Does Msxml2.XMLHTTP bind itself to MSXML 1, as well?

If so, what's the point of referencing Microsoft.XMLHTTP at all?
Shouldn't Msxml2.XMLHTTP always exist when Microsoft.XMLHTTP does?

If not, then would it be more accurate to say that Msxml2.XMLHTTP is
bound to MSXML 2 and 3?

Finally, if one wanted to use the latest version of MSXML (even though
it might not be necessary), I assume the program id's ought to be
checked in this order?:

Msxml2.XMLHTTP.6.0
Msxml2.XMLHTTP.5.0
Msxml2.XMLHTTP.4.0
Msxml2.XMLHTTP
(assuming Msxml2.XMLHTTP is not bound to MSXML 1) Microsoft.XMLHTTP

Nov 7 '06 #7
yawnmoth wrote:
If there's no Msxml3.XMLHTTP program id, I assume that means that
<http://www.quirksmode.org/book/printable/xmlhttp.txtis in error when
it references it?
It does not help having that in there as that program id does not exist
but as the code that uses it has try/catch the script will not give an
error but rather go on and create a different component.

what's the point of referencing Microsoft.XMLHTTP at all?
Original IE 5 and IE 5.5 installation have MSXML versions that support
that program id but not the program id Msxml2.XMLHTTP.

For all the details I have already pointed to
<http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xmlsdk/html/5016cf75-4358-4c1f-912e-c071aa0a0991.asp>
then there was already a link posted to a recent blog entry of the MS
XML team on what they want to be used currently.
Finally this knowledge base entry
<http://support.microsoft.com/kb/269238/en-us>
lists the different versions and which versions are or were included
with which other products (e.g. IE versions).


--

Martin Honnen
http://JavaScript.FAQTs.com/
Nov 7 '06 #8
>
>what's the point of referencing Microsoft.XMLHTTP at all?

Original IE 5 and IE 5.5 installation have MSXML versions that support
that program id but not the program id Msxml2.XMLHTTP.

For all the details I have already pointed to
<http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xmlsdk/html/5016cf75-4358-4c1f-912e-c071aa0a0991.asp>
then there was already a link posted to a recent blog entry of the MS XML
team on what they want to be used currently.
Finally this knowledge base entry
<http://support.microsoft.com/kb/269238/en-us>
lists the different versions and which versions are or were included with
which other products (e.g. IE versions).

So from what I can see, this should cover reasonable possiblilities?

// create XMLHttpRequest request
function createXMLHttpRequest()
{
if ( window.XMLHttpRequest ) // IE7 and all of interest
{
try { return new window.XMLHttpRequest(); }
catch(e) {alert("window.XMLHttpRequest failed"+e.message);}
}
else // old IE
{
try { return new ActiveXObject("Microsoft.XMLHTTP"); }
catch (e) {}
try { return new ActiveXObject("Msxml2.XMLHTTP"); }
catch (e) {alert("Platform not supported"+e.message);}
}
}

The only 'problem' being that the window.XMLHttpRequest
seems to work slightlly diferent in IE7 than others by not
allowing local rurl.

Thanks and Best Regards,
Joe
Nov 7 '06 #9

Joe D Williams wrote:
<snip>
So from what I can see, this should cover reasonable possiblilities?

// create XMLHttpRequest request
function createXMLHttpRequest()
{
if ( window.XMLHttpRequest ) // IE7 and all of interest
{
try { return new window.XMLHttpRequest(); }
catch(e) {alert("window.XMLHttpRequest failed"+e.message);}
}
else // old IE
{
try { return new ActiveXObject("Microsoft.XMLHTTP"); }
catch (e) {}
try { return new ActiveXObject("Msxml2.XMLHTTP"); }
catch (e) {alert("Platform not supported"+e.message);}
}
}
Per this discussion, it seems that it'd be better to use
Microsoft.XMLHTTP only if Msxml2.XMLHTTP is unavailable (you're doing
it in the other direction), since Microsoft.XMLHTTP refers to an older
version of Microsoft's XML Core Services then is Msxml2.

Nov 7 '06 #10

Martin Honnen wrote:
yawnmoth wrote:
If there's no Msxml3.XMLHTTP program id, I assume that means that
<http://www.quirksmode.org/book/printable/xmlhttp.txtis in error when
it references it?

It does not help having that in there as that program id does not exist
but as the code that uses it has try/catch the script will not give an
error but rather go on and create a different component.

what's the point of referencing Microsoft.XMLHTTP at all?

Original IE 5 and IE 5.5 installation have MSXML versions that support
that program id but not the program id Msxml2.XMLHTTP.

For all the details I have already pointed to
<http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xmlsdk/html/5016cf75-4358-4c1f-912e-c071aa0a0991.asp>
No page on that URL seems to discuss Microsoft.XMLHTTP request very
much.

<http://msdn.microsoft.com/library/en-us/xmlsdk/html/e5533515-e525-4781-b68b-1ecfefdd1e89.asp?frame=true>
suggests that Microsoft.XMLHTTP is bound MSXML 2. It makes no mention
of whether or not Msxml2.XMLHTTP is also bound to MSXML 2 (which would
mean that two things would be bound to it), let alone whether or not
it's bound to MSXML 1.

<http://msdn.microsoft.com/library/en-us/xmlsdk/html/5016cf75-4358-4c1f-912e-c071aa0a0991.asp>
suggests that MSXML 3 was the last one that had a version-independent
ProgID but doesn't state what the first version of MSXML to support a
version-independant ProgID was.

Nov 7 '06 #11
VK

Joe D Williams wrote:
The only 'problem' being that the window.XMLHttpRequest
seems to work slightlly diferent in IE7 than others by not
allowing local rurl.
IXMLHTTPRequand (Microsoft) does work just fine with local files -
where allowed by the security environment, of course; but for them the
status code is reported 0 and not 200. This way the regular "Web check"
if (req.status == 200)
fails. To make an ajaxoid able to work with Web requests and with local
files the check has to be:
if ( (req.status == 200) || (req.status == 0) )

Nov 8 '06 #12

"yawnmoth" <te*******@yahoo.comwrote in message
news:11**********************@f16g2000cwb.googlegr oups.com...
>
Joe D Williams wrote:
><snip>
So from what I can see, this should cover reasonable possiblilities?

// create XMLHttpRequest request
function createXMLHttpRequest()
{
if ( window.XMLHttpRequest ) // IE7 and all of interest
{
try { return new window.XMLHttpRequest(); }
catch(e) {alert("window.XMLHttpRequest failed"+e.message);}
}
else // old IE
{
try { return new ActiveXObject("Microsoft.XMLHTTP"); }
catch (e) {}
try { return new ActiveXObject("Msxml2.XMLHTTP"); }
catch (e) {alert("Platform not supported"+e.message);}
}
}

Per this discussion, it seems that it'd be better to use
Microsoft.XMLHTTP only if Msxml2.XMLHTTP is unavailable (you're doing
it in the other direction), since Microsoft.XMLHTTP refers to an older
version of Microsoft's XML Core Services then is Msxml2.
Thanks, i think I agree. Since IE7 will work with just window.XMLHttpRequest
I'm guessing it uses the latest available.
Thanks,
Joe

Nov 9 '06 #13
Joe D Williams wrote:
So from what I can see, this should cover reasonable possiblilities?
// create XMLHttpRequest request
function createXMLHttpRequest()
...
I use this, which seems a little more robust:

/**
* Returns an XMLHttpRequest object, either as a core object or an ActiveX
* implementation. If an object cannot be instantiated, it will return null;
* @returns {Object} An XMLHttpRequest object
*/
AjaxRequest.getXmlHttpRequest = function() {
if (window.XMLHttpRequest) {
return new XMLHttpRequest();
}
else if (window.ActiveXObject) {
// Based on http://jibbering.com/2002/4/httprequest.html
/*@cc_on @*/
/*@if (@_jscript_version >= 5)
try {
return new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
return new ActiveXObject("Microsoft.XMLHTTP");
} catch (E) {
return null;
}
}
@end @*/
}
else {
return null;
}
};
--
Matt Kruse
http://www.JavascriptToolbox.com
http://www.AjaxToolbox.com
Nov 9 '06 #14

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

4
by: Irene | last post by:
Hi, I have an asp page that allows a user to search for info in a DB and add info to a DB. The search uses "ADODB.Connection" objects in the page, but the add will use a call to an isapi dll...
12
by: Botan Guner | last post by:
Hi all, Here is the problem, i'm using Microsoft.XMLHTTP for ie and XMLHttpRequest for mozilla, on my local server which is win2000 server i've no problem with that but when i uploaded the file...
1
by: Raúl Martín | last post by:
I´ve a function in asp that run correctly but If I tried to change it forasp.net in asp: xmlHTTP = CreateObject("Microsoft.XMLHTTP") And I thought to use this sentence for asp.net but the...
4
by: Arnaud | last post by:
Hi, I'm trying to translate an asp application, i have some difficulties with a particular line : --- Set myxml = Server.CreateObject("Msxml2.ServerXMLHTTP.4.0") --- Classical ajax exemples...
1
by: Ike | last post by:
Ive copied an online example for writing out a php file, programmatically, then would like to re-display that data in a browswer window that automatically refreshes as the data file (getdata.php,...
6
by: csinva | last post by:
I used some code from another post to successfully search and retrieve data from a web site. But now I have been pulling out my hair trying to take informaiton out of the file and display it in my...
0
by: MLH | last post by:
http://www.alltel.com/text_messaging/ Above is the URL to which one would direct his browser to send text message to Alltel customer. I wrote a VBA script to automate text messaging field...
2
by: Skyblue | last post by:
I use Microsoft.XMLHTTP to access htm or asp pages on a central web site from other satellite sites. In this way, the same content can be displayed on a dozen websites and I only need to update one...
14
by: =?Utf-8?B?VmFuZXNzYQ==?= | last post by:
I've been searching everywhere online to find an alternative method besides using Microsoft.XMLHTTP (as it freezes the server up alot!!) but with no luck at all. I am using server side ASP, and...
1
by: CloudSolutions | last post by:
Introduction: For many beginners and individual users, requiring a credit card and email registration may pose a barrier when starting to use cloud servers. However, some cloud server providers now...
0
by: Faith0G | last post by:
I am starting a new it consulting business and it's been a while since I setup a new website. Is wordpress still the best web based software for hosting a 5 page website? The webpages will be...
0
by: ryjfgjl | last post by:
In our work, we often need to import Excel data into databases (such as MySQL, SQL Server, Oracle) for data analysis and processing. Usually, we use database tools like Navicat or the Excel import...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: aa123db | last post by:
Variable and constants Use var or let for variables and const fror constants. Var foo ='bar'; Let foo ='bar';const baz ='bar'; Functions function $name$ ($parameters$) { } ...
0
by: ryjfgjl | last post by:
If we have dozens or hundreds of excel to import into the database, if we use the excel import function provided by database editors such as navicat, it will be extremely tedious and time-consuming...
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.