Click here to Skip to main content
11,647,748 members (66,523 online)
Click here to Skip to main content

Tagged as

Simple Google News API

, 26 Mar 2014 CPOL 13K 652 16
Rate this:
Please Sign up or sign in to vote.
Google API for NEWS

Introduction

In this tip, I am going to discuss about Google news API.

Background

I have used HttpWebRequestand HttpWebResponsefor retrieving news from Google API URL. I have written all code for that....

I have one textbox for insert search parameters and one button for search data using Google API.

When we click on Get News button, it calls JavaScript GetNews() function.

From JavaScript function, Ajax post method calls web method from code behind.

Google News content has been retrieved using HttpWebRequest and HttpWebRequest, this WebMethodreturns data into array format from code behind.

Now Divhaving name "DivNews" has been appended for showing news content using jQuery.

For further details, please take a look at the code.

Using the Code

1) News.aspx

JavaScript Code

<script type="text/javascript" src="Scripts/jquery-2.1.0.min.js"></script>

CSS Code

<style type="text/css">
        .classname
        {
            -moz-box-shadow: inset 0px 1px 0px 0px #ffffff;
            -webkit-box-shadow: inset 0px 1px 0px 0px #ffffff;
            box-shadow: inset 0px 1px 0px 0px #ffffff;
            background: -webkit-gradient( linear, left top, 
            left bottom, color-stop(0.05, #ededed), color-stop(1, #dfdfdf) );
            background: -moz-linear-gradient( center top, #ededed 5%, #dfdfdf 100% );
            filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed', endColorstr='#dfdfdf');
            background-color: #ededed;
            -webkit-border-top-left-radius: 6px;
            -moz-border-radius-topleft: 6px;
            border-top-left-radius: 6px;
            -webkit-border-top-right-radius: 6px;
            -moz-border-radius-topright: 6px;
            border-top-right-radius: 6px;
            -webkit-border-bottom-right-radius: 6px;
            -moz-border-radius-bottomright: 6px;
            border-bottom-right-radius: 6px;
            -webkit-border-bottom-left-radius: 6px;
            -moz-border-radius-bottomleft: 6px;
            border-bottom-left-radius: 6px;
            text-indent: 0;
            border: 1px solid #dcdcdc;
            display: inline-block;
            color: #777777;
            font-family: arial;
            font-size: 15px;
            font-weight: bold;
            font-style: normal;
            height: 25px;
            line-height: 50px;
            width: 100px;
            text-decoration: none;
            text-align: center;
            text-shadow: 1px 1px 0px #ffffff;
        }
        .classname:hover
        {
            background: -webkit-gradient( linear, left top, 
            left bottom, color-stop(0.05, #dfdfdf), color-stop(1, #ededed) );
            background: -moz-linear-gradient( center top, #dfdfdf 5%, #ededed 100% );
            filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#dfdfdf', endColorstr='#ededed');
            background-color: #dfdfdf;
        }
        .classname:active
        {
            position: relative;
            top: 1px;
        }      
        
        .textbox
        {
            background: #FFF url(http://html-generator.weebly.com/files/theme/input-text-9.png) no-repeat 4px 4px;
            border: 1px solid #999;
            outline: 0;
            padding-left: 25px;
            height: 25px;
            width: 275px;
        }
        .style1
        {
            height: 61px;
        }
        #ProgressiveDiv
        {
            width: 100%;
            height: 100%;
            display: none;
            opacity: 0.4;
            position: fixed;
            top: 0px;
            left: 0px;
            vertical-align: middle;
        }
    </style>

HTML Code

<body>
    <form id="form1" runat="server">
    <div>
        <table>
            <tr>
                <td align="center" class="style1">
                    <h3>
                        Welcome to My news Portal</h3>
                </td>
            </tr>
            <tr>
                <td>
                    <asp:TextBox runat="server" ID="txtSubject" 
                    CssClass="textbox" onkeypress="return runScript(event)" />
                </td>
            </tr>
            <tr>
                <td align="right">
                    <h6 style="height: 35px">
                        By: Nirav Prabtani</h6>
                </td>
            </tr>
        </table>
        <div id="DivNews">
        </div>

    </div>
    <%--This Div is For Binding News--%>
    <div id="ProgressiveDiv" style="padding-left: 500px">
        <img src="Image/loading.gif" />
    </div>
    </form>
</body>

2) News.aspx.cs

All news content from Google API has been retrieved using webMethodfrom code behind.

C# Code

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Services;
using System.Net;
using System.IO;
using System.Text;
using System.Data;

namespace GoogleNews_API
{
    public partial class News : System.Web.UI.Page
    {
        //Page Load Method
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        //WenMethod GetNewsContent for Retrieving News from Google API
        [WebMethod]
        public static ItemNews[] GetNewsContent(string NewsParameters)
        {

            List<ItemNews> Details = new List<ItemNews>();

            // httpWebRequest with API URL
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create
            ("http://news.google.com/news?q=" + NewsParameters + "&output=rss");

            //Method GET
            request.Method = "GET";

            //HttpWebResponse for result
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();


            //Mapping of status code
            if (response.StatusCode == HttpStatusCode.OK)
            {
                Stream receiveStream = response.GetResponseStream();
                StreamReader readStream = null;

                if (response.CharacterSet == "")
                    readStream = new StreamReader(receiveStream);
                else
                    readStream = new StreamReader(receiveStream, Encoding.GetEncoding(response.CharacterSet));

                //Get news data in json string

                string data = readStream.ReadToEnd();

                //Declare DataSet for putting data in it.
                DataSet ds = new DataSet();
                StringReader reader = new StringReader(data);
                ds.ReadXml(reader);
                DataTable dtGetNews = new DataTable();

                if (ds.Tables.Count > 3)
                {
                    dtGetNews = ds.Tables["item"];

                    foreach (DataRow dtRow in dtGetNews.Rows)
                    {
                        ItemNews DataObj = new ItemNews();
                        DataObj.title = dtRow["title"].ToString();
                        DataObj.link = dtRow["link"].ToString();
                        DataObj.item_id = dtRow["item_id"].ToString();
                        DataObj.PubDate = dtRow["pubDate"].ToString();
                        DataObj.Description = dtRow["description"].ToString();
                        Details.Add(DataObj);
                    }
                }
            }

            //Return News array 
            return Details.ToArray();
        }

        //Define Class to return news data
        public class ItemNews
        {
            public string title { get; set; }
            public string link { get; set; }
            public string item_id { get; set; }
            public string PubDate { get; set; }
            public string Description { get; set; }
        }
    }
}

Final Output

History

  • 26th Mar 2014: Initial post

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

Share

About the Author

Nirav Prabtani
Web Developer Satva Infotech
India India

Nirav Prabtani

I am a software engineer at Satva Infotech, Database Architect and Designer /Technical Architect/Analyst Programmer in Microsoft .NET Technologies & Microsoft SQL Server with more than 2 years of hands on experience.

I love to code....!!! Smile | :)

My recent past includes my work with the education domain as a technical business requirement analyst, database architect & designer and analyst programmer; just love my involvement with the world of knowledge, learning and education and I think I know quite well what I want to do in life & in my career. What do I like? Well, ideation, brainstorming, coming up with newer and more creative ways of doing things; each time with an enhanced efficiency. An item in my day's agenda always has a task to look at what I did yesterday & focus on how I can do it better today

Contact Me

Nirav Prabtani

Mobile : +91 738 308 2188

Email : niravjprabtani@gmail.com

My Blog: Nirav Prabtani


You may also be interested in...

Comments and Discussions

 
QuestionGoogle API Alerts Update Pin
dilking20021-Dec-14 9:25
memberdilking20021-Dec-14 9:25 
Questionerror Pin
zaib fatima22-Oct-14 1:53
groupzaib fatima22-Oct-14 1:53 
GeneralGood work Nirav Pin
karthy Udhaykumar24-May-14 16:18
memberkarthy Udhaykumar24-May-14 16:18 
GeneralRe: Good work Nirav Pin
Nirav Prabtani17-Jun-14 1:38
professionalNirav Prabtani17-Jun-14 1:38 
QuestionGood Job Pin
jrooks101727-Mar-14 7:02
professionaljrooks101727-Mar-14 7:02 
Generalmy vote of 5 Pin
Southmountain26-Mar-14 6:08
memberSouthmountain26-Mar-14 6:08 
GeneralRe: my vote of 5 Pin
Nirav Prabtani 26-Mar-14 6:40
professionalNirav Prabtani 26-Mar-14 6:40 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Terms of Use | Mobile
Web02 | 2.8.150804.3 | Last Updated 26 Mar 2014
Article Copyright 2014 by Nirav Prabtani
Everything else Copyright © CodeProject, 1999-2015
Layout: fixed | fluid