meo Posted January 30, 2011 Share Posted January 30, 2011 My autoit code follows: ------------------------------------------------------------------------------- $include <IE.au3> $oIE=_IECreate("about:blank") $header="Content-Type: application/x-www-form-urlencoded" & @CRLF $postdata="abc=123&de=45" $packingArray=PackingPostData($postdata) $oIE.Navigate("http://somewhere.com/post", 0, "", $packingArray, $header) Func PackingPostData($postcontent) $count=StringLen($postcontent) Local $pack[$count] For $i=1 To $count $ch=StringMid($postcontent, $i, 1) If $ch=" " Then $ch="+" $pack[$i-1]=Asc($ch) Next Return $pack EndFunc --------------------------------------------------------------------------------- But the tracking result is, the post data is nonmeanful characters. Can anyone kindly tell me the right $packingArray? Thank you! Link to comment Share on other sites More sharing options...
JohnOne Posted January 30, 2011 Share Posted January 30, 2011 (edited) Its customary to give a brief desciption of what you code is supposed to do. Try For $i=0 To $count Also look at _INetExplorerCapable() UDF function Edited January 30, 2011 by JohnOne AutoIt Absolute Beginners Require a serial Pause Script Video Tutorials by Morthawt ipify Monkey's are, like, natures humans. Link to comment Share on other sites More sharing options...
seandisanti Posted January 30, 2011 Share Posted January 30, 2011 i'm not sure i'm understanding... your for loop is just to change spaces to pluses right? eliminate that loop and look at StringReplace() Link to comment Share on other sites More sharing options...
meo Posted January 30, 2011 Author Share Posted January 30, 2011 My packingPostData is modified from Vb (http://support.microsoft.com/kb/167658) as follows: Private Sub PackBytes(ByteArray() As Byte, ByVal PostData As String) iNewBytes = Len(PostData) - 1 ' Get rid of the null termination If iNewBytes < 0 Then Exit Sub End If ReDim ByteArray(iNewBytes) For i = 0 To iNewBytes ch = Mid(PostData, i + 1, 1) If ch = Space(1) Then ch = "+" End If ByteArray(i) = Asc(ch) Next End Sub Link to comment Share on other sites More sharing options...
meo Posted January 30, 2011 Author Share Posted January 30, 2011 Its customary to give a brief desciption of what you code is supposed to do.TryFor $i=0 To $countAlso look at _INetExplorerCapable() UDF functionLength(0 To $count) = $count + 1_INetExplorerCapable() uses: 1 To $count Link to comment Share on other sites More sharing options...
seandisanti Posted January 30, 2011 Share Posted January 30, 2011 (edited) here's the function you're translating with extra explanations, and a little condensing Private Sub PackBytes(ByteArray() As Byte, ByVal PostData As String)'sub is passed an array of bytes, and a string 'condensing the next 4 lines to one that does the same thing as the only way newbytes will be less than 0 is if the len of Postdata is 0 If Len(PostData)>0 Then iNewBytes = Len(PostData)-1 Else Exit Sub ReDim ByteArray(iNewBytes)'why take an array as a parameter and then destroy it's data with a redim? Replace(PostData," ","+")'the condition in the loop is unnecessary when you can do it all at once For i = 0 To iNewBytes'now the loop just does one thing that is adds the ascii value of the character at each position to the array ch = Mid(PostData, i + 1, 1) ByteArray(i) = Asc(ch) Next End Sub'then it's done so if i were to do this in autoit... func PackBytes($PostData);silly to bring in an argument then destroy it's value, so will just make my own inside to make the function monadic If StringLen($PostData=0) Then Exit Func $PostData=StringReplace($PostData," ",Chr(43));spaces are pluses $ByteArray=StringToAsciiArray($PostData);array of ascii values from your string End Func ***edit*** forgot to have the exit if length is 0 condition in the translation, so it went from 4 lines to 5 Edited January 30, 2011 by cameronsdad Link to comment Share on other sites More sharing options...
meo Posted January 30, 2011 Author Share Posted January 30, 2011 Just find a decrisption in IE UDf till now, autoit can not post data with IE object. Thank JohnOne and cameronsdad for your attention. ; Name...........: __IENavigate ; Description ...: ** Unsupported version of _IENavigate (note second underscore in function name) ; ** Last 4 parameters insufficiently tested. ; ** - Flags and Target can create new windows and new browser object - causing confusion ; ** - Postdata needs SAFEARRAY and we have no way to create one ; Directs an existing browser window to navigate to the specified URL ; Parameters ....: $o_object - Object variable of an InternetExplorer.Application, Window or Frame object ; $s_Url - URL to navigate to (e.g. "http://www.autoitscript.com") ; $f_wait - Optional: specifies whether to wait for page to load before returning ; 0 = Return immediately, not waiting for page to load ; 1 = (Default) Wait for page load to complete before returning ; $i_flags - URL to navigate to (e.g. "http://www.autoitscript.com") ; $s_target - target frame ; $spostdata - data for form method="POST", non-functional - requires safearray ; $s_headers - additional headers to be passed Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now