Heads up! To view this whole video, sign in with your Courses account or enroll in your free 7-day trial. Sign In Enroll
Preview
Start a free Courses trial
to watch this video
We'll use the Bing News Search API to get news headlines.
Related Discussions
Have questions about this video? Start a discussion with the community and Treehouse staff.
Sign upRelated Discussions
Have questions about this video? Start a discussion with the community and Treehouse staff.
Sign up
Now that we know how to use the web client
class to retrieve data from a web page,
0:00
we can use the Bing search
API to retrieve data.
0:04
We'll take our top ten players
of the MLS and then search for
0:08
news headlines about each player.
0:11
Earlier we use the web client
class with just a URL but
0:14
this time we'll need to send
our API key with our request.
0:18
We'll do that with headers.
0:21
You might have learned about
headers with us before,
0:23
they are extra pieces of
information about a web request or
0:25
response that includes additional
information about the message.
0:28
>> Let's take a look at
the Bing News Search API documentation.
0:33
Here, we've got a little preview tool.
0:38
We can click on one of these examples.
0:41
And it looks like we've
got results to the right.
0:44
Let's take a look at the JSON.
0:46
We start out with a curly brace.
0:49
That means that this entire
JSON response is one object.
0:51
And looks like the results are in
this property named value.
0:57
It's got an array,
I can tell because of this bracket.
1:01
Name, it looks like that's a headline.
1:04
And description, that's the summary.
1:07
Let's go back up and
click on Documentation.
1:12
Let's see, to get started read
our Getting Started guide
1:16
which describes how you can obtain
your own subscription keys.
1:19
I've already got my API key,
so if you haven't already and
1:23
wanna follow along make sure
to pause the video now.
1:26
Click on the Getting Started link right
here and follow the instructions.
1:30
Use of these APIs are free under a certain
number of requests, so keep that in mind.
1:34
For information that shows you how
to use the API, see News Guide.
1:40
All right,
let's see we've got three URLs we can use.
1:44
This second one here looks
like the one we should use for
1:48
searching on soccer player names.
1:52
Let's see if we can find an example.
1:55
Getting news articles that
are relevant to a search query.
1:58
All right.
2:01
Get, here's what our URL should
look like when we make the request.
2:05
And here's what our API
key header will look like.
2:08
And we've got a sample of the response.
2:12
I think this is all we
need to get started.
2:15
We'll need a class first so
we can deserialize this data.
2:17
We can copy this JSON response.
2:20
And we'll use our paste JSON as
classes trick we did earlier.
2:23
We'll reference this page later for
2:29
the URL in our API key once
we get into using web client.
2:31
Back in our code we'll click at class and
let's name a new search.
2:35
Okay, we've got a response
in the clipboard.
2:46
So I'll highlight this.
2:48
Click Edit.
2:50
Paste Special.
2:51
Paste JSON as Classes.
2:52
Back in the day, we used to have
to type all this out by hand.
2:56
Let's rename RootObject to NewSearch.
3:00
Now we can go back to
our program class and
3:04
create a method to retrieve
our new search results.
3:07
Down here at the bottom we can copy and
paste our Get Google home page method.
3:11
We need to make a request for
each one of our players,
3:22
so let's call it get news for player.
3:25
GetNewsForPlayer, and
3:28
it'll take a string
parameter called playerName.
3:31
For now we'll focus on just getting
the string result before we deserialize.
3:38
Let's change the variable name to,
searchResults.
3:43
And change it down here, too.
3:49
Now we need the URL,
we'll go copy it from the page.
3:53
All right this, right here and
3:58
We'll need to replace the search
parameter in the your URL, though.
4:04
We can use a method on
the string class called format.
4:08
It returns a string and
accepts additional parameters,
4:11
that it inserts into
the string it returns.
4:14
Let's see how it works.
4:17
Place Google with string.format.
4:18
The first parameter is the composite
string in which it will insert values.
4:25
Which is our URL.
4:29
Paste that there.
4:32
Then we'll replace the text after Q
equals with an indexed placeholder.
4:34
Which is specified by curly braces and
an index number.
4:41
Curly brace zero, curly brace.
4:45
Then we'll pass the player name
as the second parameter into
4:48
the string.format method.
4:53
PlayerName, then we enclose
the string.format method.
4:55
The placeholder here is telling
string.format to insert the value
5:01
of the playerName variable.
5:06
There are lots of things you
can do with this method.
5:08
It's especially useful for
formatting date time values and
5:10
decimal numbers into culture
specific formatting.
5:13
For more reading on this method,
check out the documentation and the notes.
5:17
Next we need to get our
API key in the headers.
5:21
You got your key ready?
5:24
You won't be able to use the one I am
about to use, because it will be inactive.
5:25
First, we'll need to add our header,
5:29
webClient.Headers.Add.
5:35
This add method has a few overloads.
5:39
One of them uses an enum that has some
predefined headers that are often used.
5:42
Except as a common one.
5:48
It tells the endpoint what
type of data we want.
5:50
So if the service we're requesting can
either send JSON or XML we'd specify JSON.
5:53
In our case the default is JSON so
we won't need it.
5:59
The header we need to use
though is a custom header and
6:02
it won't be on this list.
6:05
We need to use the last overload here
which just takes two strings one for
6:09
name and one for value.
6:14
We'll go back to the documentation and
grab the header name we need.
6:17
All right, and we can paste that in here,
then I'm gonna paste in my API key.
6:25
Okay, that should be all we
need to make this web request.
6:35
Let's try it out in main.
6:39
I'll replace this GetGoogleHomePage
with our new method.
6:44
GetNewsForPlayer and
I'll pass it Diego Valari.
6:47
And one more parenthesis.
6:55
Okay, let's run with control F5.
6:58
And we've got some data.
7:03
Next step we'll need to deserialize
these results into our new search class.
7:05
[BLANK-AUDIO]
7:10
You need to sign up for Treehouse in order to download course files.
Sign upYou need to sign up for Treehouse in order to set up Workspace
Sign up