الثلاثاء، 19 مارس 2013


<%@ page import="java.util.*,java.io.*,java.net.*,java.net.InetAddress;"%> <% //AdFalcon URL which used to get ads String adf_adFalconURL ="http://api.adfalcon.com/AdRequest/GetAd"; //Parameters is a variable that contains "get method request" paramerts String adf_parameters =""; /* * You must fill the following required parameters because * adfalcon will not send ads without having those values */ String adf_siteId ="[Site ID]"; /* * Ensure this is set to false once you release your web site to the public */ boolean adf_testMode =true; /* * Fill only in case specific ad sizes are required; otherwise remove this line of code, and AdFalcon will determine the best ad size for the device */ int adf_adUnitSize =1; /* * Unique User Identification: * AdFalcon will need to uniquely identify each user, therefore if you have * a User unique ID for your web site users, then provide it here * Otherwise, replies on AdFalcon to generate a unique ID for the which should be * save it in a persistent cookie/session with following properties * - Cookie value: AdFalcon's UUID or any unique value for user * - Expires : maximum as possible * - Path : / */ /* * If you have your own user unique value, assign your value to userUniqueId variable * note: remove all codes related to cookie when using your own user unique value */ String adf_userUniqueId =""; /* * this will get the user unique id generated by AdFalcon from the cookie in case this was saved in a previous ad request */ for (Cookie cookie : request.getCookies()) { if (cookie.getName().equalsIgnoreCase("ADFALCON-UUID")) { adf_userUniqueId =cookie.getValue(); } } /* * You can help adfalcon to get better targeting ads by filling optional parameters, * these parameters are demographics and device information. * you will find name of parameters in AdFalcon Server API integration guide at appendix A */ Hashtableadf_optionalParams =null; //adf_optionalParams = new Hashtable(); //adf_optionalParams.put("U_LN", "ar"); //adf_optionalParams.put("U_KW", "sport, mobile"); /* * Collects all needed information and builds "GET method request" URL */ adf_parameters +="R_SID=" +adf_siteId; adf_parameters +="&R_IP=" +URLEncoder.encode(request.getRemoteAddr(), "UTF-8"); adf_parameters +="&R_F=XHTML"; adf_parameters +="&R_V=api-all-1.0.0"; adf_parameters +="&D_UA=" +URLEncoder.encode(request.getHeader("User-Agent"), "UTF-8"); //adf_parameters +="&R_AS=" +Integer.toString(adf_adUnitSize); adf_parameters +="&R_TM=" +Boolean.toString(adf_testMode); adf_parameters +="&R_UUID=" +URLEncoder.encode(adf_userUniqueId, "UTF-8"); if (adf_optionalParams !=null) { for (String key : adf_optionalParams.keySet()) { adf_parameters +="&" +"" +URLEncoder.encode(key, "UTF-8") +"=" +URLEncoder.encode(adf_optionalParams.get(key), "UTF-8"); } } //get end user's browser header names and add them to the request adf_parameters Enumeration adf_headerNames =request.getHeaderNames(); ArrayList adf_ignoreHeaders =new ArrayList(); adf_ignoreHeaders.add("CACHE-CONTROL"); adf_ignoreHeaders.add("CONNECTION"); adf_ignoreHeaders.add("COOKIE"); adf_ignoreHeaders.add("PRAGMA"); adf_ignoreHeaders.add("USER-AGENT"); while (adf_headerNames.hasMoreElements()) { String name =adf_headerNames.nextElement().toString(); if (!adf_ignoreHeaders.contains(name.toUpperCase())) { String value =request.getHeader(name); if (name !=null &&value !=null) { adf_parameters +="&" +"R_HH_" +URLEncoder.encode(name.toUpperCase(), "UTF-8") +"=" +URLEncoder.encode(value, "UTF-8"); } } } //fill page query string adf_parameters +=(request.getQueryString() !=null ? "&" +request.getQueryString() : ""); //create GET method URL URL adf_url =new URL(adf_adFalconURL +"?" +adf_parameters); /* *Open http connection with adfalcon server and get new ad */ HttpURLConnection adf_httpURLConnection =null; InputStream adf_inputStream =null; InputStreamReader adf_inputStreamReader =null; BufferedReader adf_bufferedReader =null; try { adf_httpURLConnection =(HttpURLConnection) adf_url.openConnection(); adf_httpURLConnection.setConnectTimeout(10000); adf_httpURLConnection.setReadTimeout(10000); adf_httpURLConnection.setDoInput(true); adf_httpURLConnection.setDoOutput(true); adf_httpURLConnection.setUseCaches(false); adf_httpURLConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); adf_httpURLConnection.setRequestProperty("charset", "UTF-8"); adf_httpURLConnection.setRequestMethod("GET"); if (adf_httpURLConnection.getResponseCode() ==HttpURLConnection.HTTP_OK) { /* * in case a request was not completed successfully; * adfalcon will send two header's parameters * - X-ADFALCON-ERROR-CODE: status code of the request * - X-ADFALCON-ERROR-MESSAGE: message descripes the status code */ if (adf_httpURLConnection.getHeaderField("X-ADFALCON-ERROR-CODE") !=null) { out.println( adf_httpURLConnection.getHeaderField("X-ADFALCON-ERROR-CODE") +":" +adf_httpURLConnection.getHeaderField("X-ADFALCON-ERROR-MESSAGE")); }else { /* * Receive an ad from adfalcon server and fill it in adf_adFalconResponse variable */ adf_inputStream =adf_httpURLConnection.getInputStream(); adf_inputStreamReader =new InputStreamReader(adf_inputStream); adf_bufferedReader =new BufferedReader(adf_inputStreamReader); String adf_adFalconResponse =""; while (adf_bufferedReader.ready()) { adf_adFalconResponse +=adf_bufferedReader.readLine(); } /* * If adf_adFalconResponse variable is not null or empty, print it at page */ if (adf_adFalconResponse !=null &&!adf_adFalconResponse.trim().isEmpty()) { out.append(adf_adFalconResponse); } /* * Check if adfalcon server has sent UUID, * if yes, you should save it in presistent cookie/session * */ if (adf_httpURLConnection.getHeaderField("X-ADFALCON-UUID") !=null) { /* * if you want to use the adfalcon UUID and set it to cookie, still activate the following code */ Cookie cookie =new Cookie("ADFALCON-UUID", adf_httpURLConnection.getHeaderField("X-ADFALCON-UUID")); cookie.setMaxAge(10 *365 *24 *60 *60); cookie.setPath("/"); response.addCookie(cookie); /* * else set adfalcon UUID wherever you want */ } } } }catch (Exception ex) {} finally { if (adf_inputStream !=null) { adf_inputStream.close(); } if (adf_inputStreamReader !=null) { adf_inputStreamReader.close(); } if (adf_bufferedReader !=null) { adf_bufferedReader.close(); } if (adf_httpURLConnection !=null) { adf_httpURLConnection.disconnect(); } } %>