您的位置:首页 > 编程语言 > C#

对于AdSense的mobile版没有支持c#的解决方法~

2009-01-12 13:43 423 查看
做AdSense时后,发现mobile版沒有支持C#,东翻西找,找到一个解决方案,分享一下~~

AdSenseHelper.cs

/**********************************************************************

* AdSenseHelper Class

* Version: 1.0

* Release date: 19/09/2007

* Copyright (c) 2007 by Alberto Falossi

*

* Web & Blog: http://www.albertofalossi.com
*

* This component is 100% free to use, also in commercial applications.

* This software is provided "AS IS," without a warranty of any kind.

***********************************************************************************/

using System;

using System.Text;

using System.Collections.Generic;

using System.IO;

using System.Net;

using System.Web;

/// <summary>

/// Helper class to build AdSense banners.

/// </summary>

public static class AdSenseHelper

{

/// <summary>

/// Retrieves the markup for the AdSense banner.

/// </summary>

/// <param name="parameters">Advertisement parameters.</param>

/// <returns>The raw markup to insert into the page.</returns>

public static string GetAdMarkup(Dictionary<string, string> parameters)

{

// build the URL

string url = BuildAdSenseQueryUrl(parameters);

// get and return the response markup

return GetUrl(url);

}

/// <summary>

/// Builds a query URL for the AdSense Server, given the parameters for an advertisement.

/// </summary>

/// <param name="parameters">Advertisement parameters.</param>

/// <returns>The URL to send to the AD Server.</returns>

public static string BuildAdSenseQueryUrl(Dictionary<string, string> parameters)

{

HttpRequest request = HttpContext.Current.Request;

const string URL_ADSERVER = "http://pagead2.googlesyndication.com/pagead/ads?&";

// prepare some parameters

long googleDt = (long)DateTime.Now.Subtract(new DateTime(1970, 1, 1)).TotalMilliseconds;

string googleScheme = request.IsSecureConnection ? "https://" : "http://";

string googleHost = googleScheme + request.ServerVariables["HTTP_HOST"];

StringBuilder url = new StringBuilder(URL_ADSERVER);

// set "automatic" parameters

AddDefaultParameter(parameters, "ad_type", "text");

AddDefaultParameter(parameters, "dt", googleDt.ToString());

AddDefaultParameter(parameters, "host", HttpUtility.UrlEncode(googleHost));

AddDefaultParameter(parameters, "ip", request.UserHostAddress);

AddDefaultParameter(parameters, "ref", request.UrlReferrer == null ? "" : HttpUtility.UrlEncode(request.UrlReferrer.ToString()));

AddDefaultParameter(parameters, "url", HttpUtility.UrlEncode(request.RawUrl));

AddDefaultParameter(parameters, "useragent", HttpUtility.UrlEncode(request.UserAgent));

// add the parameters to the url

foreach (System.Collections.Generic.KeyValuePair<string, string> pair in parameters)

{

string parameterName = pair.Key;

string parameterValue = pair.Value;

// encode the color values

if (parameterName.Contains("color"))

parameterValue = GetGoogleColor(parameterValue, googleDt);

// add the parameter

url.AppendFormat("{0}={1}&", parameterName, parameterValue);

}

return url.ToString();

}

/// <summary>

/// Add a parameter to the parameters dictionary only if the parameter isn't already present.

/// </summary>

/// <param name="parameters">Parameters dictionary.</param>

/// <param name="parameterName">Parameter name.</param>

/// <param name="parameterDefaultValue">Parameter value.</param>

private static void AddDefaultParameter(Dictionary<string, string> parameters, string parameterName, string parameterDefaultValue)

{

// set the value only if the key is missing

if (!parameters.ContainsKey(parameterName))

parameters[parameterName] = parameterDefaultValue;

}

/// <summary>

/// Get a color according to Google algorithm

/// </summary>

/// <param name="value"></param>

/// <param name="random"></param>

/// <returns></returns>

private static string GetGoogleColor(string value, long random)

{

string[] colorArray = value.Split(',');

return colorArray[(int)(random % colorArray.Length)];

}

/// <summary>

/// Send a Web request and returns the server response markup.

/// </summary>

/// <param name="url">Request URL.</param>

/// <returns>A string containing the server response markup. Empty string if an error occurred.</returns>

private static string GetUrl(string url)

{

Stream sream = null;

StreamReader reader = null;

try

{

// build the request

System.Net.WebRequest request = WebRequest.Create(url);

// get the response stream

sream = request.GetResponse().GetResponseStream();

// read the stream and copy it to a string; return the string

reader = new StreamReader(sream);

return reader.ReadToEnd();

}

catch

{

// generic error, return an empty string

return "";

}

finally

{

if (reader != null)

reader.Close();

if (sream != null)

sream.Close();

}

}

}

根据给出的频道和服务码更改相应的参数~~

// ad parameters

Dictionary<string, string> parameters = new Dictionary<string, string>();

parameters["channel"] = "6653xxxxx5"; //修改成你的频道代码

parameters["client"] = "pub-33xxxxx257202040"; //你的服务号

parameters["format"] = "mobile_single";

parameters["color_border"] = "FFFFFF";

parameters["color_bg"] = "FFFFFF";

parameters["color_link"] = "0000CC";

parameters["color_text"] = "000000";

parameters["color_url"] = "008000";

// set the markup language according to the current user browser

string language = "xhtml"; //wml、chtml

parameters["markup"] = language;

parameters["output"] = language;

// retrieve the markup

string markup = AdSenseHelper.GetAdMarkup(parameters);

// fill the Literal with the markup

Response.Write(markup);

这样,就可以了~~

参考自:http://www.albertofalossi.com/page/Using-AdSense-for-Mobile-in-ASP-NET.aspx
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐