Retreiving Form "action" value using WINHTTP.WINHTTPREQUEST object!

I am using the winhttp.winhttprequest.5 object to access a web page within an asp script using visual basic script.  I can access the web page that I need and can tell from the response headers that I have the right page.  I was wondering if there was a way to retreive the "action" attribute value of a form on the url that was requested using the send method.  I can get a the value embedded in the response headers.  Although my problem is that the length of the value of the attribute "action" changes each time so that it makes it difficult to retreive only the action value from the response headers.  Is their any way to retreive only the "action" value.
LVL 1
TgerdesAsked:
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

x
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

amit_gCommented:
No you cannot simply get the single attribiue value. All the posted values are separated by & and use format AttributeName=AttributeValue. So you can split the string based on separator & and then individual elements again could be splitted by separator =. Then you have both values with you.
0
TgerdesAuthor Commented:
are you saying to split the response headers text string using an "&" what would the vbscript code look like?
0
amit_gCommented:
Not the complete code but something like this ...

sString = "A1=AValue1&A2=AValue2"
arrNameValues = Split(sString, "&")

for i = LBound(arrNameValues) to UBound(arrNameValues)
    sNameValue = arrNameValues(i)
    arrTemp = Split(sNameValue, "=")
    sName = arrTemp(0)
    sValue = arrTemp(1)
next
0
Become a Microsoft Certified Solutions Expert

This course teaches how to install and configure Windows Server 2012 R2.  It is the first step on your path to becoming a Microsoft Certified Solutions Expert (MCSE).

TgerdesAuthor Commented:
The response text that I get back is the same that you would get from viewing the source on and IE web page.  Is there another command or way to retreive the values of the form being displayed!  similar to what I would do with a "request("?????") used in vbscript?
0
TgerdesAuthor Commented:
How do I get the "sString" array with the "A1=AValue1&A2=AValue2" in it?
0
amit_gCommented:
Oh I got it wrong. I thought you are getting the posted values. You are getting the the complete HTML in the response. It is little difficult to get the action but you can try regular expresstion ...

<%
      Dim oRegExp, sString, sAction

      sString = "<form name=""annything"" action=""TheAction.asp"">"
      'sString = "<form name=""annything"" action='TheAction.asp'>"
      'sString = "<form name=""annything"" action=TheAction.asp>"

      Set oRegExp = New RegExp
      oRegExp.Global = True
      oRegExp.Pattern = ".*action=[""']*([^ >""']*).*"
      sAction = oRegExp.Replace(sString, "$1")
      Response.Write sAction
      Set oRegExp = Nothing
%>
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
TgerdesAuthor Commented:
I am trying to extract the action value.  This code seems to be replacing it with "$1".  How would I extract the the action value into a string!  In your example the value "TheAction.asp"
0
TgerdesAuthor Commented:
The Answer given by amit_g was close and his pattern worked well to retreive value.  Only the code that he gave would not work to retreive the value!   I needed to use the "execute" method instead of the replace method.  The execute method can be retreived to a matches collection, and the subpattern in the pattern can be retreived to a subMatches collection!  Anyway here is the code if anyone is interested!
   
   dim oRegExp, Match, Matches, sAction, AnyString, SubMatches
   set oRegExp = new RegExp
   oRegExp.Global = True
   oRegExp.Pattern = ".*action=[""']*([^ >""']*).*"
   Set Matches = oRegExp.Execute(AnyString)
   Set Match = Matches(0)
   sAction = Match.SubMatches(0)
   Set oRegExp = Nothing
0
amit_gCommented:
The replace also does the same thing i.e. replace the whole string with $1 and that is the first sub match i.e. the action. I was trying to save a few lines of code. Run the code as it is posted and you will see "TheAction.asp" as output in sAction.
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
ASP

From novice to tech pro — start learning today.