<%@ 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
*/
Hashtable
adf_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();
}
}
%>
ليست هناك تعليقات:
إرسال تعليق