Language
Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
This topic contains code samples that produces an XML request for the Image SourceType. For more information, see Image SourceType (Bing, Version 2.0).
Requirements
A deployment computer with an Internet connection
The ability to send requests using Hyper Text Transfer Protocol (HTTP 1.1)
The ability to parse XML
Demonstrates
These code samples demonstrate how to:
Send a request to the Bing XML interface and the Image SourceType
Display the Bing response as results
The samples are written in both Visual Basic and C#.
Example
Imports System
Imports System.Net
Imports System.Xml
' Bing API 2.0 code sample demonstrating the use of the
' Image SourceType over the XML Protocol.
Class ImageSample
' Replace the following string with the AppId you received from the
' Bing Developer Center.
Const AppId As String = "Insert your AppId here"
Shared Sub Main()
Dim request As HttpWebRequest = BuildRequest()
Try
' Send the request; display the response.
Dim response As HttpWebResponse = DirectCast( _
request.GetResponse, _
HttpWebResponse)
DisplayResponse(response)
Catch ex As WebException
' An exception occurred while accessing the network.
Console.WriteLine(ex.Message)
End Try
End Sub
Shared Function BuildRequest() As HttpWebRequest
Dim requestString As String = "http://api.bing.net/xml.aspx?"
' Common request fields (required)
requestString &= _
"AppId=" & AppId _
& "&Query=xbox site:microsoft.com" _
& "&Sources=Image"
' Common request fields (optional)
requestString &= _
"&Version=2.0" _
& "&Market=en-us" _
& "&Adult=Moderate"
' Image-specific request fields (optional)
requestString &= _
"&Image.Count=10" _
& "&Image.Offset=0"
' Create and initialize the request.
Dim request As HttpWebRequest = DirectCast( _
WebRequest.Create(requestString), HttpWebRequest)
Return request
End Function
Shared Sub DisplayResponse(ByVal response As HttpWebResponse)
' Load the response into an XmlDocument.
Dim document As New XmlDocument
document.Load(response.GetResponseStream)
' Add the default namespace to the namespace manager.
Dim nsmgr As New XmlNamespaceManager(document.NameTable)
nsmgr.AddNamespace( _
"api", _
"https://schemas.microsoft.com/LiveSearch/2008/04/XML/element")
Dim errors As XmlNodeList = document.DocumentElement.SelectNodes( _
"./api:Errors/api:Error", _
nsmgr)
If (errors.Count > 0) Then
' There are errors in the response. Display error details.
DisplayErrors(errors)
Else
' There were no errors in the response. Display the
' Image results.
DisplayResults(document.DocumentElement, nsmgr)
End If
End Sub
Shared Sub DisplayResults(ByVal root As XmlNode, _
ByVal nsmgr As XmlNamespaceManager)
' Add the Image SourceType namespace to the namespace manager.
nsmgr.AddNamespace( _
"mms", _
"https://schemas.microsoft.com/LiveSearch/2008/04/XML/multimedia")
Dim image As XmlNode = root.SelectSingleNode("./mms:Image", nsmgr)
Dim results As XmlNodeList = image.SelectNodes( _
"./mms:Results/mms:ImageResult", _
nsmgr)
Dim version As String = root.SelectSingleNode( _
"./@Version", _
nsmgr).InnerText
Dim searchTerms As String = root.SelectSingleNode( _
"./api:Query/api:SearchTerms", _
nsmgr).InnerText
Dim offset As Integer
Integer.TryParse( _
image.SelectSingleNode("./mms:Offset", nsmgr).InnerText, _
offset)
Dim total As Integer
Integer.TryParse( _
image.SelectSingleNode("./mms:Total", nsmgr).InnerText, _
total)
' Display the results header.
Console.WriteLine("Bing API Version " & version)
Console.WriteLine("Image results for " & searchTerms)
Console.WriteLine( _
"Displaying {0} to {1} of {2} results", _
offset + 1, _
offset + results.Count, _
total)
Console.WriteLine()
' Display the Image results.
Dim result As XmlNode
For Each result In results
With result
Console.WriteLine( _
.SelectSingleNode("./mms:MediaUrl", nsmgr).InnerText)
Console.WriteLine( _
"Page Title: " _
& .SelectSingleNode("./mms:Title", nsmgr).InnerText)
Console.WriteLine( _
"Page URL: " _
& .SelectSingleNode("./mms:Url", nsmgr).InnerText)
Console.WriteLine( _
"Dimensions: " _
& .SelectSingleNode("./mms:Width", nsmgr).InnerText _
& "x" _
& .SelectSingleNode("./mms:Height", nsmgr).InnerText)
Dim thumbnailUrl As String = .SelectSingleNode( _
"./mms:Thumbnail/mms:Url", _
nsmgr).InnerText
Console.WriteLine("Thumbnail URL: " + thumbnailUrl)
Console.WriteLine()
End With
Next
End Sub
Shared Sub DisplayErrors(ByVal errors As XmlNodeList)
' Iterate over the list of errors and display error details.
Console.WriteLine("Errors:")
Console.WriteLine()
Dim [error] As XmlNode
For Each [error] In errors
Dim detail As XmlNode
For Each detail In [error].ChildNodes
Console.WriteLine(detail.Name & ": " & detail.InnerText)
Next
Console.WriteLine()
Next
End Sub
End Class
using System;
using System.Net;
using System.Xml;
// Bing API 2.0 code sample demonstrating the use of the
// Image SourceType over the XML Protocol.
static class ImageSample
{
// Replace the following string with the AppId you received from the
// Bing Developer Center.
const string AppId = "Insert your AppId here";
static void Main()
{
HttpWebRequest request = BuildRequest();
try
{
// Send the request; display the response.
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
DisplayResponse(response);
}
catch (WebException ex)
{
// An exception occurred while accessing the network.
Console.WriteLine(ex.Message);
}
}
static HttpWebRequest BuildRequest()
{
string requestString = "http://api.bing.net/xml.aspx?"
// Common request fields (required)
+ "AppId=" + AppId
+ "&Query=xbox site:microsoft.com"
+ "&Sources=Image"
// Common request fields (optional)
+ "&Version=2.0"
+ "&Market=en-us"
+ "&Adult=Moderate"
// Image-specific request fields (optional)
+ "&Image.Count=10"
+ "&Image.Offset=0";
// Create and initialize the request.
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(
requestString);
return request;
}
static void DisplayResponse(HttpWebResponse response)
{
// Load the response into an XmlDocument.
XmlDocument document = new XmlDocument();
document.Load(response.GetResponseStream());
// Add the default namespace to the namespace manager.
XmlNamespaceManager nsmgr = new XmlNamespaceManager(
document.NameTable);
nsmgr.AddNamespace(
"api",
"https://schemas.microsoft.com/LiveSearch/2008/04/XML/element");
XmlNodeList errors = document.DocumentElement.SelectNodes(
"./api:Errors/api:Error",
nsmgr);
if (errors.Count > 0)
{
// There are errors in the response. Display error details.
DisplayErrors(errors);
}
else
{
// There were no errors in the response. Display the
// Image results.
DisplayResults(document.DocumentElement, nsmgr);
}
}
static void DisplayResults(XmlNode root, XmlNamespaceManager nsmgr)
{
// Add the Image SourceType namespace to the namespace manager.
string imageNamespaceUri =
"https://schemas.microsoft.com/LiveSearch/2008/04/XML/multimedia";
nsmgr.AddNamespace("mms", imageNamespaceUri);
XmlNode image = root.SelectSingleNode("./mms:Image", nsmgr);
XmlNodeList results = image.SelectNodes(
"./mms:Results/mms:ImageResult",
nsmgr);
string version = root.SelectSingleNode("./@Version", nsmgr).InnerText;
string searchTerms = root.SelectSingleNode(
"./api:Query/api:SearchTerms",
nsmgr).InnerText;
int offset;
int.TryParse(
image.SelectSingleNode("./mms:Offset", nsmgr).InnerText,
out offset);
int total;
int.TryParse(
image.SelectSingleNode("./mms:Total", nsmgr).InnerText,
out total);
// Display the results header.
Console.WriteLine("Bing API Version " + version);
Console.WriteLine("Image results for " + searchTerms);
Console.WriteLine(
"Displaying {0} to {1} of {2} results",
offset + 1,
offset + results.Count,
total);
Console.WriteLine();
// Display the Image results.
foreach (XmlNode result in results)
{
Console.WriteLine(
result.SelectSingleNode("./mms:MediaUrl", nsmgr).InnerText);
Console.WriteLine(
"Page Title: "
+ result.SelectSingleNode("./mms:Title", nsmgr).InnerText);
Console.WriteLine(
"Page URL: "
+ result.SelectSingleNode("./mms:Url", nsmgr).InnerText);
Console.WriteLine(
"Dimensions: "
+ result.SelectSingleNode("./mms:Width", nsmgr).InnerText
+ "x"
+ result.SelectSingleNode("./mms:Height", nsmgr).InnerText);
string thumbnailUrl = result.SelectSingleNode(
"./mms:Thumbnail/mms:Url",
nsmgr).InnerText;
Console.WriteLine("Thumbnail URL: " + thumbnailUrl);
Console.WriteLine();
}
}
static void DisplayErrors(XmlNodeList errors)
{
// Iterate over the list of errors and display error details.
Console.WriteLine("Errors:");
Console.WriteLine();
foreach (XmlNode error in errors)
{
foreach (XmlNode detail in error.ChildNodes)
{
Console.WriteLine(detail.Name + ": " + detail.InnerText);
}
Console.WriteLine();
}
}
}