<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Silverlight Web Services Team : pox</title><link>http://blogs.msdn.com/silverlightws/archive/tags/pox/default.aspx</link><description>Tags: pox</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Some new features for REST services</title><link>http://blogs.msdn.com/silverlightws/archive/2009/03/13/some-new-features-for-rest-services.aspx</link><pubDate>Fri, 13 Mar 2009 20:04:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9473462</guid><dc:creator>SLWSTeam</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/silverlightws/comments/9473462.aspx</comments><wfw:commentRss>http://blogs.msdn.com/silverlightws/commentrss.aspx?PostID=9473462</wfw:commentRss><description>&lt;P&gt;Just a quick announcement here of a release that will be interesting to SL developers who want to access REST services. The &lt;STRONG&gt;WCF REST Starter Kit Preview 2&lt;/STRONG&gt; is now out, go grab it at &lt;A href="http://msdn.com/wcf/rest"&gt;http://msdn.com/wcf/rest&lt;/A&gt;. The release gives you a polished install/uninstall experience, so don't be afraid to try it on your box, it won't muck it up like "preview" software so frequently does.&lt;/P&gt;
&lt;P&gt;This release gives you one interesting client-side feature that you may have heard me or &lt;A title="Eugene's blog" href="http://eugeneos.blogspot.com/" mce_href="http://eugeneos.blogspot.com/"&gt;Eugene&lt;/A&gt; speak about: &lt;STRONG&gt;Paste XML as Types&lt;/STRONG&gt;. It's a VS menu item which helps you use &lt;STRONG&gt;XmlSerializer&lt;/STRONG&gt; with REST services. Frequently these services use human-readable documentation to describe the XML shape, and it is difficult to &lt;STRONG&gt;hand-code &lt;/STRONG&gt;a type to use with &lt;STRONG&gt;XmlSerializer&lt;/STRONG&gt;, especially when the XML instance is complex. For example check out this &lt;A title="XML example from Yahoo BOSS" href="http://developer.yahoo.com/search/boss/boss_guide/Web_Search.html#id311445" mce_href="http://developer.yahoo.com/search/boss/boss_guide/Web_Search.html#id311445"&gt;sample XML response &lt;/A&gt;from the Yahoo BOSS API. With this new feature it takes&lt;STRONG&gt; one click&lt;/STRONG&gt; to generate the type:&lt;/P&gt;
&lt;P&gt;&lt;IMG style="WIDTH: 679px; HEIGHT: 527px" title="Using Paste XML as Types with Yahoo BOSS API" alt="Using Paste XML as Types with Yahoo BOSS API" src="http://blogs.msdn.com/photos/silverlightws/images/9473440/original.aspx" width=679 height=527 mce_src="http://blogs.msdn.com/photos/silverlightws/images/9473440/original.aspx"&gt;&lt;/P&gt;
&lt;P&gt;Another interesting feature in the release is &lt;STRONG&gt;HttpClient &lt;/STRONG&gt;- a sort of specialized WebClient&amp;nbsp;- which can be used to programmatically access REST services using an extensible model for sending HTTP requests and processing HTTP responses. The model enables you to complete common HTTP/REST development activities required to consume an existing service in a fraction of the time you normally spend. Some convenient time-savers include query string support (build URIs as name/value pairs) and&amp;nbsp;serialization support (easily plug in types generated with &lt;STRONG&gt;Paste XML as Types &lt;/STRONG&gt;to read the response). &lt;/P&gt;
&lt;P&gt;Unfortunately in this release the starter kit &lt;STRONG&gt;only contains a .Net version of HttpClient&lt;/STRONG&gt;, which will &lt;U&gt;not&lt;/U&gt; compile in Silverlight. We are considering porting this prototype to Silverilght, and if you get a chance to try it&amp;nbsp;on .Net, please let us know of any feedback&amp;nbsp;you have.&lt;/P&gt;
&lt;P&gt;Stay tuned for some exciting content coming out over the next week!&lt;/P&gt;
&lt;P&gt;Cheers,&lt;BR&gt;-Yavor&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9473462" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/silverlightws/archive/tags/pox/default.aspx">pox</category><category domain="http://blogs.msdn.com/silverlightws/archive/tags/tools/default.aspx">tools</category><category domain="http://blogs.msdn.com/silverlightws/archive/tags/rest/default.aspx">rest</category></item><item><title>POX Proxy Prototype Walkthrough</title><link>http://blogs.msdn.com/silverlightws/archive/2008/03/05/pox-proxy-prototype-walkthrough.aspx</link><pubDate>Wed, 05 Mar 2008 15:10:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8045383</guid><dc:creator>Yavor Georgiev - MSFT</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/silverlightws/comments/8045383.aspx</comments><wfw:commentRss>http://blogs.msdn.com/silverlightws/commentrss.aspx?PostID=8045383</wfw:commentRss><description>&lt;P&gt;&lt;STRONG&gt;Update:&lt;/STRONG&gt; Mahesh wrote a &lt;A class="" title="Step-by-step walkthrough of Ebay POX Proxy Example" href="http://blogs.msdn.com/mahjayar/archive/2008/03/05/step-by-step-guide-to-silverlight-pox-proxy-sample.aspx" target=_blank mce_href="http://blogs.msdn.com/mahjayar/archive/2008/03/05/step-by-step-guide-to-silverlight-pox-proxy-sample.aspx"&gt;detailed&amp;nbsp;step-by-step walkthrough&lt;/A&gt; of how he built the Ebay POX Proxy Example.&lt;/P&gt;
&lt;P&gt;This post discusses the design of a POX Proxy prototype.&lt;/P&gt;
&lt;H4&gt;Current POX/JSON Support&lt;/H4&gt;
&lt;P&gt;SL 2 Beta 1 comes with support for consuming POX/JSON services. &lt;/P&gt;
&lt;P&gt;The user experience is manual: the client has to use &lt;A class="" title="WebClient class" href="http://msdn2.microsoft.com/en-us/library/system.net.webclient(VS.95).aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/system.net.webclient(VS.95).aspx"&gt;&lt;STRONG&gt;WebClient&lt;/STRONG&gt;&lt;/A&gt; or &lt;A class="" title="HttpWebRequest class" href="http://msdn2.microsoft.com/en-us/library/system.net.httpwebrequest(VS.95).aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/system.net.httpwebrequest(VS.95).aspx"&gt;&lt;STRONG&gt;HttpWebRequest&lt;/STRONG&gt;&lt;/A&gt; (see &lt;A class="" title="How to: Make Requests to HTTP-Based Services" href="http://msdn2.microsoft.com/en-us/library/cc197953(VS.95).aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/cc197953(VS.95).aspx"&gt;How to: Make Requests to HTTP-Based Services&lt;/A&gt;) and then parse the response differently, depending on whether&amp;nbsp;it contains XML or JSON. &lt;/P&gt;
&lt;P&gt;XML can be deserialized in three different ways (see &lt;A class="" title="Working with XML Data in Silverlight " href="http://msdn2.microsoft.com/en-us/library/cc197950(VS.95).aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/cc197950(VS.95).aspx"&gt;Working with XML Data in Silverlight&lt;/A&gt;), with &lt;STRONG&gt;XmlSerializer&lt;/STRONG&gt; being the strongly-typed deserialization option. JSON can only be deserialized using &lt;A class="" title="DataContractJsonSerializer class" href="http://msdn2.microsoft.com/en-us/library/system.runtime.serialization.json.datacontractjsonserializer(VS.95).aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/system.runtime.serialization.json.datacontractjsonserializer(VS.95).aspx"&gt;DataContractJsonSerializer&lt;/A&gt;&amp;nbsp;(see &lt;A class="" title="Working with JSON Data in Silverlight" href="http://msdn2.microsoft.com/en-us/library/cc197957(VS.95).aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/cc197957(VS.95).aspx"&gt;Working with JSON Data in Silverlight&lt;/A&gt;), which is also strongly-typed. &lt;/P&gt;
&lt;P&gt;The code would look something like this (assuming we're working with XML, and the&amp;nbsp;&lt;STRONG&gt;User&lt;/STRONG&gt; type has already been defined so that &lt;STRONG&gt;XmlSerilalizer&lt;/STRONG&gt; can deserialize the XML returned into it).&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;public&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;void&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; HowToMakeRequestsToHttpBasedServices()&lt;BR&gt;{&lt;/FONT&gt;&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;Uri&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; serviceUri = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;Uri&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;(&lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;&lt;FONT color=#a31515 size=2&gt;"http://fabrikam.com/service/getUser"&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;);&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;// Append any parameters to serviceUri, if necessary&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;HttpWebRequest&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; request = (&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;HttpWebRequest&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;)&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;HttpWebRequest&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;.Create(serviceUri);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; request.BeginGetResponse(&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;AsyncCallback&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;(responseHandler), request);&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;
&lt;P&gt;void&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; responseHandler(&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;IAsyncResult&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; asyncResult)&lt;BR&gt;{&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;HttpWebRequest&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; request = (&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;HttpWebRequest&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;)asyncResult.AsyncState;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;HttpWebResponse&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; response = (&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;HttpWebResponse&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;)request.EndGetResponse(asyncResult);&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;Stream&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; responseStream = response.GetResponseStream();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;XmlSerializer&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; serializer = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;XmlSerializer&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;(&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;typeof&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;(&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;User&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;));&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; User&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; user = (&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;User&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;)serializer.Deserialize(responseStream);&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT color=#008000 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Use user instance...&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;
&lt;P&gt;}&lt;/P&gt;&lt;/FONT&gt;&lt;/CODE&gt;
&lt;H4&gt;POX Proxy Prototype&lt;/H4&gt;
&lt;P&gt;&lt;A class="" title="Mahesh's blog" href="http://maheshwar.net/Blog/" target=_blank mce_href="http://maheshwar.net/Blog/"&gt;Mahesh&lt;/A&gt;&amp;nbsp;prototyped a POX Proxy (available &lt;A class="" title="POX Proxy Sample" href="http://code.msdn.microsoft.com/silverlightws/Release/ProjectReleases.aspx?ReleaseId=601" target=_blank mce_href="http://code.msdn.microsoft.com/silverlightws/Release/ProjectReleases.aspx?ReleaseId=601"&gt;here&lt;/A&gt;),&amp;nbsp;which creates a very clean object model to access both POX and JSON, and hides some of the implementation details the current solution relies on.&lt;/P&gt;&lt;CODE&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;
&lt;P&gt;private&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;void&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; TestPoxProxy()&lt;BR&gt;{&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT color=#008000 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Instantiate POX proxy with base service address&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;POXProxyRequest&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; request = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;POXProxyRequest&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;(&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;Uri&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;(&lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;&lt;FONT color=#a31515 size=2&gt;"http://fabrikam.com/service/"&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;));&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT color=#008000 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Set HTTP request verb&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;request.WebMethod = &lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;&lt;FONT color=#a31515 size=2&gt;"POST"&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT color=#008000 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Use RelativeUri to specify operation on service. This allows &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // us&amp;nbsp;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT color=#008000 size=2&gt;to reuse the same proxy instance to call different &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // operations on&amp;nbsp;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT color=#008000 size=2&gt;the service&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;request.RelativeUri = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;Uri&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;(&lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;&lt;FONT color=#a31515 size=2&gt;"getUser"&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;, &lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;UriKind&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;.Relative);&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT color=#008000 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Use Dictionary&amp;lt;string, string&amp;gt; QueryParameters to pass any &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // parameters to service&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;request.QueryParameters[&lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;&lt;FONT color=#a31515 size=2&gt;"apiKey"&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;] = &lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;&lt;FONT color=#a31515 size=2&gt;"123456"&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT color=#008000 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Specify if you are sending XML ("text/xml") or JSON &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // ("application/json")&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;request.ContentType = &lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;&lt;FONT color=#a31515 size=2&gt;"text/xml"&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT color=#008000 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Now prepare the body of the request (using strongly-typed &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // model) by setting &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT color=#008000 size=2&gt;properties on an object. See the note at &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // the end about where GetUserRequestType &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT color=#008000 size=2&gt;comes from.&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;GetUserRequestType&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; requestBody = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;GetUserRequestType&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;();&lt;BR&gt;&lt;FONT color=#008000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;requestBody.UserId = 1;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT color=#008000 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Send request&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;request.GetResponseCompleted += &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;EventHandler&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;GetResponseCompletedEventArgs&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&amp;gt;(responseHandler);&lt;BR&gt;&lt;FONT size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; request.GetResponseAsync&amp;lt;&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;GetUserRequestType&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&amp;gt;(requestBody);&lt;/P&gt;&lt;/FONT&gt;
&lt;P mce_keep="true"&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT color=#008000 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // request.RequestSerialized and request.ResponseDeSerialized &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // events&amp;nbsp;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT color=#008000 size=2&gt;are available for access to serialized object &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // representations&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;}&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;
&lt;P&gt;void&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; responseHandler(&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;object&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; sender, &lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;GetResponseCompletedEventArgs&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; e)&lt;BR&gt;{&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#008000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;POXProxyResponse&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; response = e.Response;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT color=#008000 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Get the data from the response, again using strongly-typed &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // object. Note that &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT color=#008000 size=2&gt;this could have been deserialized from either &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // JSON or XML - the proxy&amp;nbsp;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT color=#008000 size=2&gt;automatically decides which serializer &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // to use based on the content-type&amp;nbsp;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT color=#008000 size=2&gt;of the HTTP response. See the &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT color=#008000 size=2&gt;note at the end about where GetUserResponseType &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT color=#008000 size=2&gt;comes from.&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#008000&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;GetUserResponseType&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; responseBody = response.GetResponse&amp;lt;&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;GetUserResponseType&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&amp;gt;();&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT color=#008000 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Use the response: responseBody.Name, responseBody.Age, etc..&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;}&lt;/FONT&gt;&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Note:&lt;/STRONG&gt; The two types &lt;STRONG&gt;GetUserRequestType&lt;/STRONG&gt; and &lt;STRONG&gt;GetUserResponseType&lt;/STRONG&gt; are generated and decorated with the appropriate attributes so that they will serialize into the XML/JSON request/response the service expects. If the schema of the request/response is known, these can be auto-generated by a tool. We'll save this discussion for another post.&lt;/P&gt;
&lt;H4&gt;Ebay POX Proxy Example&lt;/H4&gt;
&lt;P&gt;Mahesh builds a cool app on top of the POX proxy. The app displays the XML/JSON request and response on the right, and a visualization of the returned data on the left.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;A href="http://code.msdn.microsoft.com/silverlightws/Release/ProjectReleases.aspx?ReleaseId=601"&gt;&lt;IMG title="POX Proxy Sample" style="WIDTH: 500px; HEIGHT: 299px" height=299 alt="POX Proxy Sample" src="http://blogs.msdn.com/photos/silverlightws/images/8056012/original.aspx" width=500 mce_src="http://blogs.msdn.com/photos/silverlightws/images/8056012/original.aspx"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;Any comments or thoughts on this design?&lt;/P&gt;
&lt;P mce_keep="true"&gt;Yavor Georgiev&lt;BR&gt;Program Manager&lt;BR&gt;Connected Framework Team&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8045383" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/silverlightws/archive/tags/samples/default.aspx">samples</category><category domain="http://blogs.msdn.com/silverlightws/archive/tags/json/default.aspx">json</category><category domain="http://blogs.msdn.com/silverlightws/archive/tags/pox/default.aspx">pox</category><category domain="http://blogs.msdn.com/silverlightws/archive/tags/prototype/default.aspx">prototype</category></item></channel></rss>