Simulate form post from Server Side
am 26.09.2007 12:16:47 von BarryXHi,
How do I simulate this from the server side:
Hi,
How do I simulate this from the server side:
"BarryX"
>Hi,
>
>How do I simulate this from the server side:
>
>
>action="http://SOMEURL/Search.ASP?Parm1=1&Parm2=2">
>
>I have generally been posting data using:
>
> Set xml = Server.CreateObject("Microsoft.XMLHTTP")
> xml.Open "POST","http://SOMEURL/Search.asp?" & strParmList, False
> xml.Send
>
>The above is fine for passing URL parameters, but I need to simulate it
>coming from a form which has a name. How do I pass the form name which
>is used at the posted URL?
AFAIK, the "name" attribute of a form tag really has no meaning and is
never transmitted to the server. On a normal HTML page, if you want to
send an extra bit of data you use a element.
--
Tim Slattery
MS MVP(DTS)
Slattery_T@bls.gov
http://members.cox.net/slatteryt
BarryX wrote:
> Hi,
>
> How do I simulate this from the server side:
>
>
> action="http://SOMEURL/Search.ASP?Parm1=1&Parm2=2">
>
> I have generally been posting data using:
>
> Set xml = Server.CreateObject("Microsoft.XMLHTTP")
> xml.Open "POST","http://SOMEURL/Search.asp?" & strParmList, False
> xml.Send
>
> The above is fine for passing URL parameters, but I need to simulate
> it coming from a form which has a name. How do I pass the form name
> which is used at the posted URL?
>
1. In server-side code, use Microsoft.ServerXMLHTTP
2. I don;'t think this is possible due to security restrictions. What
are you trying to accomplish?
--
Microsoft MVP -- ASP/ASP.NET
Please reply to the newsgroup. The email account listed in my From
header is my spam trap, so I don't check it very often. You will get a
quicker response by posting to the newsgroup.
Bob Barrows [MVP] wrote on 26 sep 2007 in
microsoft.public.inetserver.asp.general:
> BarryX wrote:
>> Hi,
>>
>> How do I simulate this from the server side:
>>
>>
>> action="http://SOMEURL/Search.ASP?Parm1=1&Parm2=2">
>>
> 1. In server-side code, use Microsoft.ServerXMLHTTP
> 2. I don;'t think this is possible due to security restrictions. What
> are you trying to accomplish?
>
>
<%
url = "http://www.espn.com/main.html"
set xmlhttp = CreateObject("MSXML2.ServerXMLHTTP")
xmlhttp.open "POST", url, false
xmlhttp.setRequestHeader "Content-Type", "application/x-www-form-
urlencoded"
xmlhttp.send "x=1&y=2"
Response.write xmlhttp.responseText
set xmlhttp = nothing
%>
--
Evertjan.
The Netherlands.
(Please change the x'es to dots in my emailaddress)
Evertjan. wrote:
> Bob Barrows [MVP] wrote on 26 sep 2007 in
> microsoft.public.inetserver.asp.general:
>
>> BarryX wrote:
>>> Hi,
>>>
>>> How do I simulate this from the server side:
>>>
>>>
>>> action="http://SOMEURL/Search.ASP?Parm1=1&Parm2=2">
>>>
>
>
>> 1. In server-side code, use Microsoft.ServerXMLHTTP
>> 2. I don;'t think this is possible due to security restrictions. What
>> are you trying to accomplish?
>>
>>
>
> <%
> url = "http://www.espn.com/main.html"
> set xmlhttp = CreateObject("MSXML2.ServerXMLHTTP")
> xmlhttp.open "POST", url, false
> xmlhttp.setRequestHeader "Content-Type", "application/x-www-form-
> urlencoded"
> xmlhttp.send "x=1&y=2"
> Response.write xmlhttp.responseText
> set xmlhttp = nothing
> %>
>
>
>
I'm not sure what your point is ... how does this help the OP accomplish
his task?
--
Microsoft MVP -- ASP/ASP.NET
Please reply to the newsgroup. The email account listed in my From
header is my spam trap, so I don't check it very often. You will get a
quicker response by posting to the newsgroup.
Bob Barrows [MVP] wrote on 26 sep 2007 in
microsoft.public.inetserver.asp.general:
> Evertjan. wrote:
>> Bob Barrows [MVP] wrote on 26 sep 2007 in
>> microsoft.public.inetserver.asp.general:
>>
>>> BarryX wrote:
>>>> Hi,
>>>>
>>>> How do I simulate this from the server side:
>>>>
>>>>
>>>> action="http://SOMEURL/Search.ASP?Parm1=1&Parm2=2">
>>>>
>>
>>
>>> 1. In server-side code, use Microsoft.ServerXMLHTTP
>>> 2. I don;'t think this is possible due to security restrictions.
>>> What are you trying to accomplish?
>>>
>>>
>>
>> <%
>> url = "http://www.espn.com/main.html"
>> set xmlhttp = CreateObject("MSXML2.ServerXMLHTTP")
>> xmlhttp.open "POST", url, false
>> xmlhttp.setRequestHeader "Content-Type", "application/x-www-form-
>> urlencoded"
>> xmlhttp.send "x=1&y=2"
>> Response.write xmlhttp.responseText
>> set xmlhttp = nothing
>> %>
>>
>>
>>
> I'm not sure what your point is ... how does this help the OP
> accomplish his task?
>
Oops, I should have quoted Shakespeare, not aspfaq.
["A form by any other name ..."]
<%
url = "http://www.espn.com/main.html"
set xmlhttp = CreateObject("MSXML2.ServerXMLHTTP")
xmlhttp.open "POST", url, false
xmlhttp.setRequestHeader "Content-Type", "application/x-www-form-
urlencoded"
xmlhttp.send "theFormName=myNewForm"
Response.write xmlhttp.responseText
set xmlhttp = nothing
%>
[Doing what html can only do in a (possibly hidden) input]
--
Evertjan.
The Netherlands.
(Please change the x'es to dots in my emailaddress)
This looks promising Evertjan.
Will mess with it. Thanks.
"Evertjan."
news:Xns99B7BE4C6C278eejj99@194.109.133.242...
> Bob Barrows [MVP] wrote on 26 sep 2007 in
> microsoft.public.inetserver.asp.general:
>
> > Evertjan. wrote:
> >> Bob Barrows [MVP] wrote on 26 sep 2007 in
> >> microsoft.public.inetserver.asp.general:
> >>
> >>> BarryX wrote:
> >>>> Hi,
> >>>>
> >>>> How do I simulate this from the server side:
> >>>>
> >>>>
> >>>> action="http://SOMEURL/Search.ASP?Parm1=1&Parm2=2">
> >>>>
> >>
> >>
> >>> 1. In server-side code, use Microsoft.ServerXMLHTTP
> >>> 2. I don;'t think this is possible due to security restrictions.
> >>> What are you trying to accomplish?
> >>>
> >>>
> >>
> >> <%
> >> url = "http://www.espn.com/main.html"
> >> set xmlhttp = CreateObject("MSXML2.ServerXMLHTTP")
> >> xmlhttp.open "POST", url, false
> >> xmlhttp.setRequestHeader "Content-Type", "application/x-www-form-
> >> urlencoded"
> >> xmlhttp.send "x=1&y=2"
> >> Response.write xmlhttp.responseText
> >> set xmlhttp = nothing
> >> %>
> >>
> >>
> >>
> > I'm not sure what your point is ... how does this help the OP
> > accomplish his task?
> >
>
> Oops, I should have quoted Shakespeare, not aspfaq.
>
> ["A form by any other name ..."]
>
>
> <%
> url = "http://www.espn.com/main.html"
> set xmlhttp = CreateObject("MSXML2.ServerXMLHTTP")
> xmlhttp.open "POST", url, false
> xmlhttp.setRequestHeader "Content-Type", "application/x-www-form-
> urlencoded"
> xmlhttp.send "theFormName=myNewForm"
> Response.write xmlhttp.responseText
> set xmlhttp = nothing
> %>
>
> [Doing what html can only do in a (possibly hidden) input]
>
>
> --
> Evertjan.
> The Netherlands.
> (Please change the x'es to dots in my emailaddress)
This is a multi-part message in MIME format.
------=_NextPart_000_00C8_01C802A8.4DF0FF20
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
It might help if I describe the full problem. I am trying to simulate =
this:
=20
action=3D"Search.ASP?WCI=3DgetPage">
So URL parameters AND form parameters going to the POSTed server. This =
is currently triggered from the client side with a click to this:
=20
javascript:document.SearchForm.PAGE.value=3D'2';document.Sea rchForm.submi=
t();
Doing the above works OK so all I want to do is simulate this. The =
object being to bring back page 2 of N pages. A parameter is being =
passed to the server by doing this. So I really need to simulate: =
SearchForm.PAGE.value=3D'2'. The server belongs to someone else so I =
can't change anything at the POSTed end.
=20
My Server Side code to simulate is as follows:
Set xml =3D Server.CreateObject("MSXML2.ServerXMLHTTP")
strURL =3D "?WCI=3DgetPage" & _
"&IsPortfolio" & _
"&DEL" & _
"&PropertyID" & _
">YP=3D0" & _ =20
"&PAGE=3D2" & _
"&PER=3D5" & _
"&SearchForm.asp" & _
"&StyleSheet" & _
"&STYPE=3D0" & _
"&Exit" & _
"&GID=3D422" & _
"&CURRENCY=3DGBP"
xml.Open "POST","search.asp" & strURL, False
' ???????????????? Maybe this is the area=20
xml.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
xml.Send "SearchForm"
=20
' Create XML DOM object for the XML
Set xmlDoc =3D Server.CreateObject("Microsoft.XMLDOM")
xmlDoc.async =3D False
xmlDoc.loadXML xml.responseText
=20
' Create DOM object for the XSL
Set xslDoc =3D Server.CreateObject("Microsoft.XMLDOM")
xslDoc.async =3D False
=20
' Load a stylesheet
xslDoc.load (Server.MapPath("Summary.XSLT")) =20
=20
' Convert XML using XSL to HTML
strHTML =3D xmlDoc.transformNode(xslDoc)
=20
' Send to client
Response.Write strHTML
=20
' All finished
Set xml =3D Nothing
Set xslDoc =3D Nothing=20
Set xmlDoc =3D Nothing
Any help appreciated.
Barry.
"BarryX"
news:uWLMjjoAIHA.5184@TK2MSFTNGP02.phx.gbl...
>=20
> This looks promising Evertjan.
>=20
> Will mess with it. Thanks.
>=20
>=20
> "Evertjan."
> news:Xns99B7BE4C6C278eejj99@194.109.133.242...
> > Bob Barrows [MVP] wrote on 26 sep 2007 in
> > microsoft.public.inetserver.asp.general:
> >
> > > Evertjan. wrote:
> > >> Bob Barrows [MVP] wrote on 26 sep 2007 in
> > >> microsoft.public.inetserver.asp.general:
> > >>
> > >>> BarryX wrote:
> > >>>> Hi,
> > >>>>
> > >>>> How do I simulate this from the server side:
> > >>>>
> > >>>>
> > >>>> action=3D"http://SOMEURL/Search.ASP?Parm1=3D1&Parm2=3D2">
> > >>>>
> > >>
> > >>
> > >>> 1. In server-side code, use Microsoft.ServerXMLHTTP
> > >>> 2. I don;'t think this is possible due to security restrictions.
> > >>> What are you trying to accomplish?
> > >>>
> > >>>
> > >>
> > >> <%
> > >> url =3D "http://www.espn.com/main.html"
> > >> set xmlhttp =3D CreateObject("MSXML2.ServerXMLHTTP")
> > >> xmlhttp.open "POST", url, false
> > >> xmlhttp.setRequestHeader "Content-Type", =
"application/x-www-form-
> > >> urlencoded"
> > >> xmlhttp.send "x=3D1&y=3D2"
> > >> Response.write xmlhttp.responseText
> > >> set xmlhttp =3D nothing
> > >> %>
> > >>
> > >> =
> > >>
> > > I'm not sure what your point is ... how does this help the OP
> > > accomplish his task?
> > >
> >
> > Oops, I should have quoted Shakespeare, not aspfaq.
> >
> > ["A form by any other name ..."]
> >
> >
> > <%
> > url =3D "http://www.espn.com/main.html"
> > set xmlhttp =3D CreateObject("MSXML2.ServerXMLHTTP")
> > xmlhttp.open "POST", url, false
> > xmlhttp.setRequestHeader "Content-Type", =
"application/x-www-form-
> > urlencoded"
> > xmlhttp.send "theFormName=3DmyNewForm"
> > Response.write xmlhttp.responseText
> > set xmlhttp =3D nothing
> > %>
> >
> > [Doing what html can only do in a (possibly hidden) input]
> >
> >
> > --=20
> > Evertjan.
> > The Netherlands.
> > (Please change the x'es to dots in my emailaddress)
>=20
>
------=_NextPart_000_00C8_01C802A8.4DF0FF20
Content-Type: text/html;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
charset=3Diso-8859-1">
BarryX"
news:%23G2Rj9pAIHA.288@TK2MSFTNGP02.phx.gbl...
>>>>>>>>>>>>>>
It might help if I describe the full problem. I am trying to simulate this:
action="Search.ASP?WCI=getPage">
So URL parameters AND form parameters going to the POSTed server. This is
currently triggered from the client side with a click to this:
javascript:document.SearchForm.PAGE.value='2';document.Searc hForm.submit();
Doing the above works OK so all I want to do is simulate this. The object
being to bring back page 2 of N pages. A parameter is being passed to the
server by doing this. So I really need to simulate:
SearchForm.PAGE.value='2'. The server belongs to someone else so I can't
change anything at the POSTed end.
My Server Side code to simulate is as follows:
Set xml = Server.CreateObject("MSXML2.ServerXMLHTTP")
strURL = "?WCI=getPage" & _
"&IsPortfolio" & _
"&DEL" & _
"&PropertyID" & _
">YP=0" & _
"&PAGE=2" & _
"&PER=5" & _
"&SearchForm.asp" & _
"&StyleSheet" & _
"&STYPE=0" & _
"&Exit" & _
"&GID=422" & _
"&CURRENCY=GBP"
xml.Open "POST","search.asp" & strURL, False
' ???????????????? Maybe this is the area
xml.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
xml.Send "SearchForm"
' Create XML DOM object for the XML
Set xmlDoc = Server.CreateObject("Microsoft.XMLDOM")
xmlDoc.async = False
xmlDoc.loadXML xml.responseText
' Create DOM object for the XSL
Set xslDoc = Server.CreateObject("Microsoft.XMLDOM")
xslDoc.async = False
' Load a stylesheet
xslDoc.load (Server.MapPath("Summary.XSLT"))
' Convert XML using XSL to HTML
strHTML = xmlDoc.transformNode(xslDoc)
' Send to client
Response.Write strHTML
' All finished
Set xml = Nothing
Set xslDoc = Nothing
Set xmlDoc = Nothing
Any help appreciated.
Barry.
<<<<<<<<<<<
If you are doing simulations then one tool that is indispensible is
www.fiddlertool.com
With this running use a browser to perform a Form post you want to emulate.
You can now check the recorded session in the tool an you'll see what you
need to reproduce.
If you noticed from the example Evertjan gave you when the form method is a
POST the set of field values should be sent as the entity body of the
request, IOW a string encoded as URL search section is passed as the
paremeter of the send function.
Hence your code should look more like:-
Set xml = Server.CreateObject("MSXML2.ServerXMLHTTP")
strURL = "http//host.domain.com/search.asp?WCI=getPage"
strDat = "IsPortfolio=" & _
"&DEL=" & _
"&PropertyID=" & _
">YP=0" & _
"&PAGE=2" & _
"&PER=5" & _
"&RestrictSearch=" & _
"&StyleSheet=" & _
"&STYPE=0" & _
"&Exit=" & _
"&GID=422" & _
"&CURRENCY=GBP"
xml.Open "POST",strURL, False
xml.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
xml.Send strDat
Note that any values that you might concatenate into the data needs to be
urlencoded,
BTW, are you sure the form post actually results in an XML response?
--
Anthony Jones - MVP ASP/ASP.NET
Hi Anthony,
Yes, definitely XML coming back.
The example:
javascript:document.SearchForm.PAGE.value='2';document.Searc hForm.submit()
was provided as a template example to me from the server owner. I could
simply do this and it would work fine. But then I would have to transform
the XML at the client side and I want it all on the server side.
Doing the above, ie. setting PAGE=2 from the client side does not seem to be
working when issued from the server side. Trouble is, it is very difficult
to work out why it doesn't work. I just get an empty page back.
Barry.
"Anthony Jones"
news:O2AhzM5AIHA.4568@TK2MSFTNGP02.phx.gbl...
>
> BarryX"
> news:%23G2Rj9pAIHA.288@TK2MSFTNGP02.phx.gbl...
> >>>>>>>>>>>>>>
> It might help if I describe the full problem. I am trying to simulate
this:
>
>
> action="Search.ASP?WCI=getPage">
>
>
>
>
>
>
>
>
>
>
>
>
>
> So URL parameters AND form parameters going to the POSTed server. This is
> currently triggered from the client side with a click to this:
>
>
javascript:document.SearchForm.PAGE.value='2';document.Searc hForm.submit();
>
> Doing the above works OK so all I want to do is simulate this. The object
> being to bring back page 2 of N pages. A parameter is being passed to the
> server by doing this. So I really need to simulate:
> SearchForm.PAGE.value='2'. The server belongs to someone else so I can't
> change anything at the POSTed end.
>
> My Server Side code to simulate is as follows:
>
> Set xml = Server.CreateObject("MSXML2.ServerXMLHTTP")
> strURL = "?WCI=getPage" & _
> "&IsPortfolio" & _
> "&DEL" & _
> "&PropertyID" & _
> ">YP=0" & _
> "&PAGE=2" & _
> "&PER=5" & _
> "&SearchForm.asp" & _
> "&StyleSheet" & _
> "&STYPE=0" & _
> "&Exit" & _
> "&GID=422" & _
> "&CURRENCY=GBP"
> xml.Open "POST","search.asp" & strURL, False
>
> ' ???????????????? Maybe this is the area
> xml.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
> xml.Send "SearchForm"
>
> ' Create XML DOM object for the XML
> Set xmlDoc = Server.CreateObject("Microsoft.XMLDOM")
> xmlDoc.async = False
> xmlDoc.loadXML xml.responseText
>
> ' Create DOM object for the XSL
> Set xslDoc = Server.CreateObject("Microsoft.XMLDOM")
> xslDoc.async = False
>
> ' Load a stylesheet
> xslDoc.load (Server.MapPath("Summary.XSLT"))
>
> ' Convert XML using XSL to HTML
> strHTML = xmlDoc.transformNode(xslDoc)
>
> ' Send to client
> Response.Write strHTML
>
> ' All finished
> Set xml = Nothing
> Set xslDoc = Nothing
> Set xmlDoc = Nothing
>
> Any help appreciated.
> Barry.
> <<<<<<<<<<<
>
> If you are doing simulations then one tool that is indispensible is
> www.fiddlertool.com
>
> With this running use a browser to perform a Form post you want to
emulate.
> You can now check the recorded session in the tool an you'll see what you
> need to reproduce.
>
> If you noticed from the example Evertjan gave you when the form method is
a
> POST the set of field values should be sent as the entity body of the
> request, IOW a string encoded as URL search section is passed as the
> paremeter of the send function.
>
> Hence your code should look more like:-
>
> Set xml = Server.CreateObject("MSXML2.ServerXMLHTTP")
>
> strURL = "http//host.domain.com/search.asp?WCI=getPage"
>
> strDat = "IsPortfolio=" & _
> "&DEL=" & _
> "&PropertyID=" & _
> ">YP=0" & _
> "&PAGE=2" & _
> "&PER=5" & _
> "&RestrictSearch=" & _
> "&StyleSheet=" & _
> "&STYPE=0" & _
> "&Exit=" & _
> "&GID=422" & _
> "&CURRENCY=GBP"
>
> xml.Open "POST",strURL, False
> xml.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
> xml.Send strDat
>
> Note that any values that you might concatenate into the data needs to be
> urlencoded,
>
> BTW, are you sure the form post actually results in an XML response?
>
>
> --
> Anthony Jones - MVP ASP/ASP.NET
>
>
"BarryX"
news:uZkrDEBBIHA.3780@TK2MSFTNGP05.phx.gbl...
>
> Hi Anthony,
>
> Yes, definitely XML coming back.
>
> The example:
>
> javascript:document.SearchForm.PAGE.value='2';document.Searc hForm.submit()
>
> was provided as a template example to me from the server owner. I could
> simply do this and it would work fine. But then I would have to transform
> the XML at the client side and I want it all on the server side.
>
> Doing the above, ie. setting PAGE=2 from the client side does not seem to
be
> working when issued from the server side. Trouble is, it is very difficult
> to work out why it doesn't work. I just get an empty page back.
>
1) Install fiddler.
2) Build a VBScript file to emulate POST (use XmlHttp not ServerXmlHttp).
3) With fiddler use suppliers example of making post.
4) Use VBScript file to make the post.
5) In fiddler compare POSTs made by the two approaches
6) Adjust VBScript until its requests matches the suppliers example
7) Tweak script to use ServerXMLHTTP and check it still works
8) Install code into ASP.
--
Anthony Jones - MVP ASP/ASP.NET