Easy-to-follow video tutorials help you learn software, creative, and business skills.Become a member
I'd like to show you how to connect to web servers and retrieve information. The site I'm going to use for the project is bing.com. I'll start by looking at how Bing queries are formatted. As you can see, I have the Bing web site open and in the URL, I'm going to change the query string to show you how our queries really run against the Bing servers. I'm going to type the word "search" and then a question mark, and then the letter q= and then my search term, wpf, and press Enter. So let's examine this search query.
The search means you want to do a search, the q stands for query, and then the equal sign says to assign the WPF string to the query string. If I change this to another word, say "lynda", then you see I now have a different search query. Now, one of many interesting things that Bing does that a lot of the other search engines don't do is that if you put an ampersand here, and then say format=rss, it will return your search results as an RSS feed, and then you can point your RSS reader at this feed and get a constant update for this topic.
So, I'm going to use this string when I go talk to the Bing server in my code. So now I need to switch over to Visual Studio. And I'm going to come down here and double-click on the MainWindow.xaml.cs. This is the code from the earlier movie. I did make one little change here. Now, one of the things you can do in C# when you're making a call to a function, or a method as I like to say, is that you can use name parameters now in C# 4. So, this is the name of the parameter, showAsRSS, and I can use that and then a colon. I find that it makes my code easier to read.
My job now is to write some code in this SendToBing function. The first thing I'm going to do in this function is verify whether the user entered a search term. You might recall that this text box here is called searchText. So, I'm going to write an if-then statement. I'm doing a Ctrl+Tab now to switch back to the other screen, and then I'm going to say if. Now I'm going to press the Tab key twice because "if" is a code snippet, and it will stub in the basics of an if statement. And then I'm going to say string.IsEmpty, actually I mean string .IsNullOrEmpty, and then a couple of parentheses here and then searchText.Text.
So what this says is look at the text box, see if the user has typed something in. If it's null or empty, then I'm going to show a MessageBox and say, "Please enter," something like that, okay? Now let's verify that this works. I'm going to compile my application, save my changes-- you may not see that dialog on your machine--and then I'm going to debug the application by choosing Start Debugging, which will launch my application. Now, if I click on the Search Bing button, I get my MessageBox.
If I click on the Get RSS button, I see the same MessageBox. If I type a Search Term here--wpf--and click the button, I don't see the dialog, but nothing else interesting happens yet because I haven't written the code to talk to the Bing server. So let's do that next. I return back to Visual Studio. I'm going to close this Output window on the bottom of the screen, and then the next thing I'm going to do is do is write a little bit of code here in the SendToBing function to establish a connection to Microsoft's Bing servers. To do that, I'm going to use a class called the WebClient.
I'll declare a variable and instantiate an instance of this class. Now I can format a URL and send that to the web client, and I'll get a response back from that server. Next, I am going to take this code that I have down here, and I'm going to uncomment it by clicking on this Uncomment button down here, and then I'm going to cut that, Ctrl+X, and paste that in here. So, if you say show as RSS, I'm going to build this string using that Bing search syntax I just showed you a few minutes ago. And I'm going to take the data from the text box and then place it in the string right here.
So you see how that equals q= and then whatever is typed in the TextBox. Then I'll send that off to the Bing servers. Now, I'm getting some red squiggles here because I need a variable to hold this URL. So I'll come up here and type in "string url;", and then these red squiggles should go away. And then down here at the bottom, I'm going to call the WebClient and say, "I would like to download a string." So, what I'm going to do is I'm going to send the information over the server. The server is going to send me back a result, and I'm going to say, "I want that back as a string." And I want to do it on a second thread.
I want to do it on a background worker thread so I don't block the UI, so I'm going to choose this one here, DownloadStringAsync, and one more parenthesis right there. So this says, "Start a second thread. Go talk to the server." Here, I'm doing a little magic. I've got this plain string, but that's not enough for this. It needs it formatted to something called the URI, which is a special type in .NET. That's why I'm saying new Uri, and then I'm passing the string, the url into that Uri class.
I'm about ready to go. I need to know when Bing returns the information to me. So, I'm going to add one more bit of code up here at the top. I'm going to say WebClient .DownloadStringCompleted. This event fires when the results come back from the Bing servers. So, what I'm going to do is I'm going to press the Tab key to finish typing, then the Plus sign, then the Equal sign, and then Visual Studio's going to help me write the next couple lines of code. I'm going to press Tab once, because it says press TAB to insert, and then it says press TAB to generate the wc_ DownloadStringCompleted in this class.
I'll press Tab again, and it just wrote this function for me down here. This code will run when the download is complete, and all I'm going to do down here is set my browser to NavigateToString. And I'll pass it in. The piece of information we're going to get returned from the web server, it will come in this variable right here. So I'll say e.Result. I think I am ready to run this application.
Debug > Start Debugging. I'll type in "wpf", and then I'll click the Get RSS button. I need some formatting. I would need to do some data binding and make sure that this gets loaded in a list box or a treeView. I'll show you how to do that in another demo. Now, let me click on the Search Bing button. I'll type in "lynda" this time. And for some reason on my machine, I'm getting these script errors. I just have to click the No button four times, and now you see my browser running inside my application is showing the entire HTML results coming back from the Bing servers.
Now, we've got a working WPF application. By using the WebClient class, we reached out to the Bing web site and retrieved the search results. It would be nice to store the history of my searches in a database. That's the topic of the next movie, where I show you how to work with data and data binding.
Get unlimited access to all courses for just $25/month.Become a member
61 Video lessons · 96308 Viewers
56 Video lessons · 110069 Viewers
71 Video lessons · 78879 Viewers
131 Video lessons · 37851 Viewers
Access exercise files from a button right under the course name.
Search within course videos and transcripts, and jump right to the results.
Remove icons showing you already watched videos if you want to start over.
Make the video wide, narrow, full-screen, or pop the player out of the page into its own window.
Click on text in the transcript to jump to that spot in the video. As the video plays, the relevant spot in the transcript will be highlighted.