In Eclipse heb je altijd een main nodig om je code te kunnen testen. Zoals bv. deze:
public class testKlasseStudent { public static void main (String args[ ]){ Student a = new Student("Jef Janssen", 1.83, 75); a.toonAlles(); } }
Geef het aantal elementen in een Array weer.
public int getAantal() { return tabel.length; }
Sinds het begin van dit semester moeten we elke week Franse woordjes oefenen.
Mezelf kennende wist ik dat ik zoiets niet lang zou volhouden,
tenzij er een manier bestond waarbij het leuk is om die woordjes te oefenen… als ik er dus een soort uitdaging van kon maken.
Na enig denkwerk besloot ik om zelf een programmaatje te schrijven. “Woordjes” was geboren!
Nu we halfweg het semester zijn en het programmaatje bruikbaar, maar nog niet perfect, is wil ik het met jullie delen.
U vindt de download link in de rechter kolom.
U typt dan de vertaling, in dit geval un chien, in het tekstveld en drukt op enter.
Als het woord juist is dan geeft hij het volgende woord dat u kan vertalen.
Is het woord fout dan krijgt u de juiste vertaling te zien in het rood, die dient u dan over te typen in het tekstveld.
Vervolgens drukt u weer op enter.
Is het woord deze keer wel juist dan krijgt u het volgende woord te zien.
Is het woord fout dan blijft hij vragen naar de juiste vertaling.
Voorlopig is er nog geen mogelijkheid om zonder een juiste oplossing naar het volgende woord te gaan.
Blijkbaar is veiligheid geen prioriteit bij appcelerator en implementeren ze wel basic authentication maar geen digest…
Iemand heeft hen dat ooit al wel eens gezegd bij wijze van feature request maar de priority daarvoor is “low”.
Eitherway, dan maar zelf proberen op te lossen:
// Let's try to make a connection var request = Titanium.Network.createHTTPClient(); request.onload = function() { // Because we're using digest authentication // we won't get anything here yet // but getting a 401 error instead }; request.onerror = function(e) { Titanium.API.info("IN 'normal' ERROR: " + JSON.stringify(e)); if (this.status == 401) { wwwAuthString = "" + this.getResponseHeader("WWW-Authenticate"); // Get all www-Authenticate from the header var wwwAuthArray = Array(); wwwAuthArray = wwwAuthString.split(","); var nonceArray = Array(); // Get the nonce part nonce = "" + wwwAuthArray[2]; // And get rid of nonce= nonceArray = nonce.split('"'); // split on " nonce = nonceArray[1]; Ti.API.info('nonce = ' + nonce); // And try again var req2 = Titanium.Network.createHTTPClient(); req2.onload = function(e) { alert("SUCCES!: " + JSON.stringify(e)); Titanium.API.info("In success mode: " + this.responseText); // DO SOME OTHER STUFF }; req2.onerror = function(e) { alert("ERROR req2 " + e.error); } req2.setTimeout(10); req2.setRequestHeader("Content-Type","application/json"); // open the client req2.open('GET', 'http://host.tld/path'); // Populate all vars for digest authentication var realm = "REST API"; var uri = "/path"; var qop = "auth"; var nc = '00000002'; // This shouldn't be a fixed value var cnonce = "0a4f113b"; // Idem ditto var A1 = Ti.Utils.md5HexDigest('username' + ':' + realm + 'password'); var A2 = Ti.Utils.md5HexDigest('GET'+':'+ uri); var resp = Ti.Utils.md5HexDigest(A1 + ':' + nonce + ':' + nc + ':' + cnonce + ':' + qop + ':' + A2 ); // Add authentication' var authstr = 'Digest ' + resp; req2.setRequestHeader('Authorization', authstr); // send the data req2.send(); } }; request.setTimeout(10); request.setRequestHeader("Content-Type","application/json"); // open the client request.open('GET', 'http://host.tld/path'); // send the data request.send();
Ik ben er in geslaagd data van de server terug te krijgen die noodzakelijk is voor digest authentication, maar wanneer ik die data naar de server terugstuur loopt het mis en krijg ik alsnog een error. Moest je toevallig een oplossing hiervoor hebben of deze code verder uitpluizen: Let me know 😉
Is het mogelijk om cookies te plaatsen vanuit een pagina in een iframe?
tl;dr: Ja.
Iets langere uitleg en test:
Om dat te testen heb ik twee pagina’s gemaakt.
Een index-pagina met iframe en een php-pagina waarin de cookies geplaatst worden.
Wanneer je naar de pagina met iframe gaat dan kan je zien dat er wel degelijk een cookie geplaatst wordt.