Hey guys, I have a few questions which shouldn't be too complicated if you know air/actionscript
Alright, so I've got a bit of a problem here. What I want my code to do is to login you to a 3rd party site, and to do that it has to be able to send/receive cookies.
1) Shouldn't request.manageCookies = true; take care of this?
2) assuming it doesn't, or if I just wanted to do it the hard way, I'm guessing I could set cookies by checking the response headers, but my response headers are always EMPTY. my code is below and as you can probably tell I copy+pasted a print_r function to print the headers (i also tried other functions, but they all showed the array being empty)
Maybe I missed something easy, I have no idea. Thanks in advance!
function print_r (array, return_val) {
// http://kevin.vanzonneveld.net
// + original by: Michael White (http://getsprink.com)
// + improved by: Ben Bryan
// + input by: Brett Zamir (http://brett-zamir.me)
// + improved by: Brett Zamir (http://brett-zamir.me)
// + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// - depends on: echo
// * example 1: print_r(1, true);
// * returns 1: 1
var output = "", pad_char = " ", pad_val = 4, d = this.window.document;
var getFuncName = function (fn) {
var name = (/\W*function\s+([\w\$]+)\s*\(/).exec(fn);
if (!name) {
return '(Anonymous)';
}
return name[1];
};
var repeat_char = function (len, pad_char) {
var str = "";
for (var i=0; i < len; i++) {
str += pad_char;
}
return str;
};
var formatArray = function (obj, cur_depth, pad_val, pad_char) {
if (cur_depth > 0) {
cur_depth++;
}
var base_pad = repeat_char(pad_val*cur_depth, pad_char);
var thick_pad = repeat_char(pad_val*(cur_depth+1), pad_char);
var str = "";
if (typeof obj === 'object' && obj !== null && obj.constructor && getFuncName(obj.constructor) !== 'PHPJS_Resource') {
str += "Array\n" + base_pad + "(\n";
for (var key in obj) {
if (obj[key] instanceof Array) {
str += thick_pad + "["+key+"] => "+formatArray(obj[key], cur_depth+1, pad_val, pad_char);
} else {
str += thick_pad + "["+key+"] => " + obj[key] + "\n";
}
}
str += base_pad + ")\n";
} else if (obj === null || obj === undefined) {
str = '';
} else { // for our "resource" class
str = obj.toString();
}
return str;
};
output = formatArray(array, 0, pad_val, pad_char);
if (return_val !== true) {
if (d.body) {
this.echo(output);
}
else {
try {
d = XULDocument; // We're in XUL, so appending as plain text won't work; trigger an error out of XUL
this.echo('<pre xmlns="http://www.w3.org/1999/xhtml" style="white-space:pre;">'+output+'</pre>');
}
catch (e) {
this.echo(output); // Outputting as plain text may work in some plain XML
}
}
return true;
} else {
return output;
}
}
function login() {
var errors;
var request = new air.URLRequest();
request.url = "post.php";
request.method = air.URLRequestMethod.POST;
request.requestHeaders = new Array();
request.manageCookies = true;
request.followRedirects = true;
request.contentType = "text/html";
var loader = new air.URLLoader();
loader.dataFormat = air.URLLoaderDataFormat.VARIABLES;
var agent = "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.3) Gecko/2008100922 Ubuntu/8.04 (hardy) Firefox/3.0.3";
request.userAgent = agent;
var username = 'email@gmail.com';
var pass = 'pass';
var dataXML = "charset_test=%E2%82%AC%2C%C2%B4%2C%E2%82%AC%2C%C2%B4%2C%E6%B0%B4%2C%D0%94%2C%D0%84&email=" + username + "&pass=" + pass + "&charset_test=%E2%82%AC%2C%C2%B4%2C%E2%82%AC%2C%C2%B4%2C%E6%B0%B4%2C%D0%94%2C%D0%84&version=0.2.3&md5pass=1&noerror=1&challenge=9a8c91fcad71c4cfc6d195ba04d39a56";
var variables = new air.URLVariables(dataXML);
request.data = variables;
loader.dataFormat = air.URLLoaderDataFormat.TEXT;
loader.addEventListener(air.Event.COMPLETE, completeHandler);
try
{
loader.addEventListener(air.HTTPStatusEvent.HTTP_RESPONSE_STATUS, responseStatusHandler);
//loader.addEventListener(HTTPStatusEvent.HTTP_STATUS, statusHandler);
loader.load(request);
}
catch (error)
{
air.trace("Unable to load URL");
}
function responseStatusHandler(event) {
var test = print_r(event.responseHeaders, true);
alert(test);
}
function statusHandler(event) {
}
function completeHandler(event) {
var loader = air.URLLoader(event.target);
var xml = loader.data;
xml = unescape(xml);
document.getElementById("continue4").innerHTML = xml;
responseHeaders = event["responseHeaders"];
}
if(document.loginform.email.value.length < 1) {
alert("You must enter in an email");
errors = 1;
}
if(document.loginform.pass.value.length < 1) {
alert("You must enter in a password");
errors = 1;
}
if(!errors) {
mhide("myBox");
mshow("continue");
}
else {
}
}