<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>URLConnection &#8211; Xojo Programming Blog</title>
	<atom:link href="https://blog.xojo.com/tag/urlconnection/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.xojo.com</link>
	<description>Blog about the Xojo programming language and IDE</description>
	<lastBuildDate>Mon, 18 Aug 2025 20:38:25 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
	<item>
		<title>Xojo Web Rescues a .NET Project</title>
		<link>https://blog.xojo.com/2024/10/23/xojo-web-rescues-a-net-project/</link>
		
		<dc:creator><![CDATA[Wayne Golding]]></dc:creator>
		<pubDate>Wed, 23 Oct 2024 16:40:14 +0000</pubDate>
				<category><![CDATA[Guest Post]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Encryption]]></category>
		<category><![CDATA[Rapid Application Development]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[URLConnection]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Xojo Programming Language]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=13909</guid>

					<description><![CDATA[I had a call recently from a customer whose upstream supplier informed them that they would not be accepting anything less than TLS 1.2 encryption.&#8230;]]></description>
										<content:encoded><![CDATA[
<p>I had a call recently from a customer whose upstream supplier informed them that they would not be accepting anything less than TLS 1.2 encryption. The customer’s application is written using .NET 1.1 (they are testing a new version but aren’t ready to deploy to production just yet). Their supplier insisted on a 1-week time limit. Can I help?</p>



<p>My answer was, of course, “Let me have a look and get back to you.”</p>



<p>I went to my favourite dev tool, Xojo, and went through the process of developing a solution.&nbsp;The connection is a REST API, so I’ll start with a web project and use the HandleURL event. And I’ll use a URLConnection to pass on the request.&nbsp; Wait … could it be that simple?</p>



<pre class="wp-block-code"><code>Function HandleURL(request As WebRequest, response As WebResponse) Handles HandleURL as Boolean

  // Create the outbound connection
  Var connector As New URLConnection
 
  // Copy the content of the request
  connector.SetRequestContent(request.Body, request.MIMEType)

  // Send the request
  Var result As String
  Try
    result = connector.SendSync("POST", kAddress + request.Path)
  Catch err As RuntimeException
    // Catch DNS, Certificate &amp; Timeout errors
    response.Status = 500
    response.Write(err.Message)
    Return True
  End

  // Return the result of the request
  response.Status = connector.HTTPStatusCode
  response.Write(result)

  Return True

End Function</code></pre>



<p>The answer is, &#8220;Yes!&#8221;&nbsp; This is all the code in the entire project.</p>



<p>You will notice that there is no security, but in this instance that is fine as the virtual machine is running this is on the same network as the client server and the firewall is configured to only allow connections from that server.</p>



<p>After processing over 60 thousand requests, memory use is 7.3MB and never exceeded 13MB.&nbsp;CPU usage was at the maximum 1.5%.</p>



<p>Even after using Xojo for 20 years this still blows my mind.</p>



<p><em>Wayne Golding has been a Xojo developer since 2005 and is a Xojo MVP. He operates the IT Company <a href="http://www.axisdirect.nz">Axis Direct Ltd </a>which primarily develops applications using Xojo that integrate with Xero www.xero.com. Wayne’s hobby is robotics where he uses Xojo to build applications for his Raspberry Pi, often implementing IoT for remote control.</em></p>



<ul class="wp-block-social-links has-normal-icon-size is-content-justification-center is-layout-flex wp-container-core-social-links-is-layout-16018d1d wp-block-social-links-is-layout-flex"><li class="wp-social-link wp-social-link-facebook  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.facebook.com/goxojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12 2C6.5 2 2 6.5 2 12c0 5 3.7 9.1 8.4 9.9v-7H7.9V12h2.5V9.8c0-2.5 1.5-3.9 3.8-3.9 1.1 0 2.2.2 2.2.2v2.5h-1.3c-1.2 0-1.6.8-1.6 1.6V12h2.8l-.4 2.9h-2.3v7C18.3 21.1 22 17 22 12c0-5.5-4.5-10-10-10z"></path></svg><span class="wp-block-social-link-label screen-reader-text">Facebook</span></a></li>

<li class="wp-social-link wp-social-link-x  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://x.com/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M13.982 10.622 20.54 3h-1.554l-5.693 6.618L8.745 3H3.5l6.876 10.007L3.5 21h1.554l6.012-6.989L15.868 21h5.245l-7.131-10.378Zm-2.128 2.474-.697-.997-5.543-7.93H8l4.474 6.4.697.996 5.815 8.318h-2.387l-4.745-6.787Z" /></svg><span class="wp-block-social-link-label screen-reader-text">X</span></a></li>

<li class="wp-social-link wp-social-link-linkedin  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.linkedin.com/company/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M19.7,3H4.3C3.582,3,3,3.582,3,4.3v15.4C3,20.418,3.582,21,4.3,21h15.4c0.718,0,1.3-0.582,1.3-1.3V4.3 C21,3.582,20.418,3,19.7,3z M8.339,18.338H5.667v-8.59h2.672V18.338z M7.004,8.574c-0.857,0-1.549-0.694-1.549-1.548 c0-0.855,0.691-1.548,1.549-1.548c0.854,0,1.547,0.694,1.547,1.548C8.551,7.881,7.858,8.574,7.004,8.574z M18.339,18.338h-2.669 v-4.177c0-0.996-0.017-2.278-1.387-2.278c-1.389,0-1.601,1.086-1.601,2.206v4.249h-2.667v-8.59h2.559v1.174h0.037 c0.356-0.675,1.227-1.387,2.526-1.387c2.703,0,3.203,1.779,3.203,4.092V18.338z"></path></svg><span class="wp-block-social-link-label screen-reader-text">LinkedIn</span></a></li>

<li class="wp-social-link wp-social-link-github  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://github.com/topics/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12,2C6.477,2,2,6.477,2,12c0,4.419,2.865,8.166,6.839,9.489c0.5,0.09,0.682-0.218,0.682-0.484 c0-0.236-0.009-0.866-0.014-1.699c-2.782,0.602-3.369-1.34-3.369-1.34c-0.455-1.157-1.11-1.465-1.11-1.465 c-0.909-0.62,0.069-0.608,0.069-0.608c1.004,0.071,1.532,1.03,1.532,1.03c0.891,1.529,2.341,1.089,2.91,0.833 c0.091-0.647,0.349-1.086,0.635-1.337c-2.22-0.251-4.555-1.111-4.555-4.943c0-1.091,0.39-1.984,1.03-2.682 C6.546,8.54,6.202,7.524,6.746,6.148c0,0,0.84-0.269,2.75,1.025C10.295,6.95,11.15,6.84,12,6.836 c0.85,0.004,1.705,0.114,2.504,0.336c1.909-1.294,2.748-1.025,2.748-1.025c0.546,1.376,0.202,2.394,0.1,2.646 c0.64,0.699,1.026,1.591,1.026,2.682c0,3.841-2.337,4.687-4.565,4.935c0.359,0.307,0.679,0.917,0.679,1.852 c0,1.335-0.012,2.415-0.012,2.741c0,0.269,0.18,0.579,0.688,0.481C19.138,20.161,22,16.416,22,12C22,6.477,17.523,2,12,2z"></path></svg><span class="wp-block-social-link-label screen-reader-text">GitHub</span></a></li>

<li class="wp-social-link wp-social-link-youtube  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.youtube.com/c/XojoInc" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M21.8,8.001c0,0-0.195-1.378-0.795-1.985c-0.76-0.797-1.613-0.801-2.004-0.847c-2.799-0.202-6.997-0.202-6.997-0.202 h-0.009c0,0-4.198,0-6.997,0.202C4.608,5.216,3.756,5.22,2.995,6.016C2.395,6.623,2.2,8.001,2.2,8.001S2,9.62,2,11.238v1.517 c0,1.618,0.2,3.237,0.2,3.237s0.195,1.378,0.795,1.985c0.761,0.797,1.76,0.771,2.205,0.855c1.6,0.153,6.8,0.201,6.8,0.201 s4.203-0.006,7.001-0.209c0.391-0.047,1.243-0.051,2.004-0.847c0.6-0.607,0.795-1.985,0.795-1.985s0.2-1.618,0.2-3.237v-1.517 C22,9.62,21.8,8.001,21.8,8.001z M9.935,14.594l-0.001-5.62l5.404,2.82L9.935,14.594z"></path></svg><span class="wp-block-social-link-label screen-reader-text">YouTube</span></a></li></ul>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Effortless HTTP Requests in Xojo: Using Curl in Xojo with URLConnection</title>
		<link>https://blog.xojo.com/2024/06/05/effortless-http-requests-in-xojo-using-curl-in-xojo-with-urlconnection/</link>
		
		<dc:creator><![CDATA[Gabriel Ludosanu]]></dc:creator>
		<pubDate>Wed, 05 Jun 2024 20:52:00 +0000</pubDate>
				<category><![CDATA[Networking]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Basic Authentication]]></category>
		<category><![CDATA[CURL]]></category>
		<category><![CDATA[File Download]]></category>
		<category><![CDATA[HTTP Requests]]></category>
		<category><![CDATA[URLConnection]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=13013</guid>

					<description><![CDATA[If you’re familiar with the command-line tool curl, you may wonder how to use curl in Xojo effectively. Curl is a powerful tool for making HTTP requests, but it’s not always the most convenient for working within a graphical application like Xojo. That's where Xojo's URLConnection class shines! It provides a simple and elegant way to make HTTP requests directly from your Xojo code, making it easy to use curl in Xojo. In this article, you will learn how to adapt common curl commands to Xojo's URLConnection. Let's get started.]]></description>
										<content:encoded><![CDATA[
<p>You’re building a fantastic Xojo application that needs to connect to the internet, grab data from websites, or send information to web services. This is where HTTP requests come in. They’re the language your application uses to talk to the web.</p>



<p>If you’re familiar with the command-line tool curl, you may wonder how to use curl in Xojo effectively. Curl is a powerful tool for making HTTP requests, but it’s not always the most convenient for working within a graphical application like Xojo.</p>



<p>That&#8217;s where Xojo&#8217;s <a href="https://documentation.xojo.com/api/networking/urlconnection.html" data-type="link" data-id="https://documentation.xojo.com/api/networking/urlconnection.html" target="_blank" rel="noreferrer noopener">URLConnection</a> class shines! It provides a simple and elegant way to make HTTP requests directly from your Xojo code, making it easy to use curl in Xojo.</p>



<p>In this post, you will learn how to adapt common curl commands to Xojo&#8217;s URLConnection. Let&#8217;s get started.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Basic GET Request Using Curl in Xojo</h3>



<p>Meaning: Fetch the content of the specified URL using a GET request.</p>



<div class="wp-block-columns are-vertically-aligned-top is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-vertically-aligned-top is-layout-flow wp-block-column-is-layout-flow">
<p>Curl:</p>



<pre class="wp-block-code"><code>curl https://example.com</code></pre>
</div>



<div class="wp-block-column is-vertically-aligned-top is-layout-flow wp-block-column-is-layout-flow">
<p>Xojo:</p>



<pre class="wp-block-code"><code>Var socket As New URLConnection
Var response As String = socket.SendSync("GET", "https://example.com", 30)</code></pre>
</div>
</div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">GET Request with Query Parameters</h3>



<p>Meaning: Fetch the content of the specified URL with query parameters.</p>



<div class="wp-block-columns are-vertically-aligned-top is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-vertically-aligned-top is-layout-flow wp-block-column-is-layout-flow">
<p>Curl:</p>



<pre class="wp-block-code"><code>curl "https://example.com?param1=value1&amp;param2=value2"</code></pre>
</div>



<div class="wp-block-column is-vertically-aligned-top is-layout-flow wp-block-column-is-layout-flow">
<p>Xojo:</p>



<pre class="wp-block-code"><code>Var socket As New URLConnection
Var response As String = socket.SendSync("GET", "https://example.com?param1=value1&amp;param2=value2", 30)</code></pre>



<p>Or:</p>



<pre class="wp-block-code"><code>Var socket As New URLConnection

// Define the query parameters using Pair
Var queryParams() As Pair
queryParams.Add("param1" : "value1")
queryParams.Add("param2" : "value2")

// Construct the URL with query parameters
Var baseURL As String = "https://example.com"
Var queryString As String = "?"

For Each param As Pair In queryParams
  queryString = queryString + param.Left + "=" + param.Right + "&amp;"
Next

// Remove the trailing '&amp;' character
queryString = queryString.Left(queryString.Length - 1)

// Combine base URL and query string
Var fullURL As String = baseURL + queryString

Var response As String = socket.SendSync("GET", fullURL, 30)</code></pre>
</div>
</div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Adding Headers</h3>



<p>Meaning: Send a GET request with a custom header.</p>



<div class="wp-block-columns are-vertically-aligned-top is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-vertically-aligned-top is-layout-flow wp-block-column-is-layout-flow">
<p>Curl:</p>



<pre class="wp-block-code"><code>curl -H "Content-Type: application/json" https://example.com</code></pre>
</div>



<div class="wp-block-column is-vertically-aligned-top is-layout-flow wp-block-column-is-layout-flow">
<p>Xojo:</p>



<pre class="wp-block-code"><code>Var socket As New URLConnection
socket.RequestHeader("Content-Type") = "application/json"
Var response As String = socket.SendSync("GET", "https://example.com", 30)</code></pre>
</div>
</div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Sending JSON Data with POST</h3>



<p>Meaning: Send a POST request with JSON data to the specified URL.</p>



<div class="wp-block-columns are-vertically-aligned-top is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-vertically-aligned-top is-layout-flow wp-block-column-is-layout-flow">
<p>Curl:</p>



<pre class="wp-block-code"><code>curl -L 'http://example.com' ^
-H 'Content-Type: application/json' ^
-d '{"key1":"value1","key2":"value2"}'</code></pre>
</div>



<div class="wp-block-column is-vertically-aligned-top is-layout-flow wp-block-column-is-layout-flow">
<p>Xojo:</p>



<pre class="wp-block-code"><code>Var socket As New URLConnection
Var jsonData As String = "{""key1"":""value1"",""key2"":""value2""}"
socket.SetRequestContent(jsonData, "application/json")
Var response As String = socket.SendSync("POST", "https://example.com", 30)</code></pre>



<p>Or:</p>



<pre class="wp-block-code"><code>Var socket As New URLConnection
// Create a new JSONItem
Var json As New JSONItem

// Add key-value pairs to the JSONItem
json.Value("key1") = "value1"
json.Value("key2") = "value2"

socket.SetRequestContent(json.ToString, "application/json")
Var response As String = socket.SendSync("POST", "https://example.com", 30)</code></pre>
</div>
</div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Basic Authentication</h3>



<p>Meaning: Send a GET request with basic authentication.</p>



<div class="wp-block-columns are-vertically-aligned-top is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-vertically-aligned-top is-layout-flow wp-block-column-is-layout-flow">
<p>Curl:</p>



<pre class="wp-block-code"><code>curl -u username:password http://example.com</code></pre>
</div>



<div class="wp-block-column is-vertically-aligned-top is-layout-flow wp-block-column-is-layout-flow">
<p>Xojo:</p>



<pre class="wp-block-code"><code>Var socket As New URLConnection
socket.RequestHeader("Authorization") = "Basic " + EncodeBase64("username:password")
Var response As String = socket.SendSync("GET", "https://example.com", 30)</code></pre>
</div>
</div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Download a File</h3>



<p>Meaning: Download a file from the specified URL and save it with the given filename.</p>



<div class="wp-block-columns are-vertically-aligned-top is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-vertically-aligned-top is-layout-flow wp-block-column-is-layout-flow">
<p>Curl:</p>



<pre class="wp-block-code"><code>curl -o filename https://example.com/file.zip</code></pre>
</div>



<div class="wp-block-column is-vertically-aligned-top is-layout-flow wp-block-column-is-layout-flow">
<p>Xojo:</p>



<pre class="wp-block-code"><code>Var socket As New URLConnection
Var outputFile As FolderItem = SpecialFolder.Desktop.Child("file.zip")
socket.SendSync("GET", "https://example.com/file.zip", outputFile, 30)</code></pre>
</div>
</div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Custom Request Methods</h3>



<p>Meaning: Send a DELETE request to the specified URL (you can replace DELETE with any other method required, PUT, PATCH&#8230;)</p>



<div class="wp-block-columns are-vertically-aligned-top is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-vertically-aligned-top is-layout-flow wp-block-column-is-layout-flow">
<p>Curl:</p>



<pre class="wp-block-code"><code>curl -X DELETE https://example.com/resource</code></pre>
</div>



<div class="wp-block-column is-vertically-aligned-top is-layout-flow wp-block-column-is-layout-flow">
<p>Xojo:</p>



<pre class="wp-block-code"><code>Var socket As New URLConnection
Var response As String = socket.SendSync("DELETE", "https://example.com/resource", 30)</code></pre>
</div>
</div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p>As you&#8217;ve seen, using curl in Xojo with the <a href="https://documentation.xojo.com/api/networking/urlconnection.html" data-type="link" data-id="https://documentation.xojo.com/api/networking/urlconnection.html" target="_blank" rel="noreferrer noopener">URLConnection</a> class is a breeze.</p>



<p>Whether you&#8217;re fetching data, sending/receiving JSON payloads, or downloading files, the examples provided in this tutorial offer a solid foundation for integrating web services into your Xojo applications. As you continue to experiment with URLConnection, you&#8217;ll discover even more ways to enhance your projects and improve your workflow.</p>



<p>If you found this tutorial helpful, don&#8217;t forget to share it with your fellow developers and colleagues. </p>



<p><em>Gabriel is a digital marketing enthusiast who loves coding with Xojo to create cool software tools for any platform. He is always eager to learn and share new ideas!</em></p>



<ul class="wp-block-social-links has-normal-icon-size is-content-justification-center is-layout-flex wp-container-core-social-links-is-layout-16018d1d wp-block-social-links-is-layout-flex"><li class="wp-social-link wp-social-link-facebook  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.facebook.com/goxojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12 2C6.5 2 2 6.5 2 12c0 5 3.7 9.1 8.4 9.9v-7H7.9V12h2.5V9.8c0-2.5 1.5-3.9 3.8-3.9 1.1 0 2.2.2 2.2.2v2.5h-1.3c-1.2 0-1.6.8-1.6 1.6V12h2.8l-.4 2.9h-2.3v7C18.3 21.1 22 17 22 12c0-5.5-4.5-10-10-10z"></path></svg><span class="wp-block-social-link-label screen-reader-text">Facebook</span></a></li>

<li class="wp-social-link wp-social-link-x  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://x.com/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M13.982 10.622 20.54 3h-1.554l-5.693 6.618L8.745 3H3.5l6.876 10.007L3.5 21h1.554l6.012-6.989L15.868 21h5.245l-7.131-10.378Zm-2.128 2.474-.697-.997-5.543-7.93H8l4.474 6.4.697.996 5.815 8.318h-2.387l-4.745-6.787Z" /></svg><span class="wp-block-social-link-label screen-reader-text">X</span></a></li>

<li class="wp-social-link wp-social-link-linkedin  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.linkedin.com/company/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M19.7,3H4.3C3.582,3,3,3.582,3,4.3v15.4C3,20.418,3.582,21,4.3,21h15.4c0.718,0,1.3-0.582,1.3-1.3V4.3 C21,3.582,20.418,3,19.7,3z M8.339,18.338H5.667v-8.59h2.672V18.338z M7.004,8.574c-0.857,0-1.549-0.694-1.549-1.548 c0-0.855,0.691-1.548,1.549-1.548c0.854,0,1.547,0.694,1.547,1.548C8.551,7.881,7.858,8.574,7.004,8.574z M18.339,18.338h-2.669 v-4.177c0-0.996-0.017-2.278-1.387-2.278c-1.389,0-1.601,1.086-1.601,2.206v4.249h-2.667v-8.59h2.559v1.174h0.037 c0.356-0.675,1.227-1.387,2.526-1.387c2.703,0,3.203,1.779,3.203,4.092V18.338z"></path></svg><span class="wp-block-social-link-label screen-reader-text">LinkedIn</span></a></li>

<li class="wp-social-link wp-social-link-github  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://github.com/topics/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12,2C6.477,2,2,6.477,2,12c0,4.419,2.865,8.166,6.839,9.489c0.5,0.09,0.682-0.218,0.682-0.484 c0-0.236-0.009-0.866-0.014-1.699c-2.782,0.602-3.369-1.34-3.369-1.34c-0.455-1.157-1.11-1.465-1.11-1.465 c-0.909-0.62,0.069-0.608,0.069-0.608c1.004,0.071,1.532,1.03,1.532,1.03c0.891,1.529,2.341,1.089,2.91,0.833 c0.091-0.647,0.349-1.086,0.635-1.337c-2.22-0.251-4.555-1.111-4.555-4.943c0-1.091,0.39-1.984,1.03-2.682 C6.546,8.54,6.202,7.524,6.746,6.148c0,0,0.84-0.269,2.75,1.025C10.295,6.95,11.15,6.84,12,6.836 c0.85,0.004,1.705,0.114,2.504,0.336c1.909-1.294,2.748-1.025,2.748-1.025c0.546,1.376,0.202,2.394,0.1,2.646 c0.64,0.699,1.026,1.591,1.026,2.682c0,3.841-2.337,4.687-4.565,4.935c0.359,0.307,0.679,0.917,0.679,1.852 c0,1.335-0.012,2.415-0.012,2.741c0,0.269,0.18,0.579,0.688,0.481C19.138,20.161,22,16.416,22,12C22,6.477,17.523,2,12,2z"></path></svg><span class="wp-block-social-link-label screen-reader-text">GitHub</span></a></li>

<li class="wp-social-link wp-social-link-youtube  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.youtube.com/c/XojoInc" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M21.8,8.001c0,0-0.195-1.378-0.795-1.985c-0.76-0.797-1.613-0.801-2.004-0.847c-2.799-0.202-6.997-0.202-6.997-0.202 h-0.009c0,0-4.198,0-6.997,0.202C4.608,5.216,3.756,5.22,2.995,6.016C2.395,6.623,2.2,8.001,2.2,8.001S2,9.62,2,11.238v1.517 c0,1.618,0.2,3.237,0.2,3.237s0.195,1.378,0.795,1.985c0.761,0.797,1.76,0.771,2.205,0.855c1.6,0.153,6.8,0.201,6.8,0.201 s4.203-0.006,7.001-0.209c0.391-0.047,1.243-0.051,2.004-0.847c0.6-0.607,0.795-1.985,0.795-1.985s0.2-1.618,0.2-3.237v-1.517 C22,9.62,21.8,8.001,21.8,8.001z M9.935,14.594l-0.001-5.62l5.404,2.82L9.935,14.594z"></path></svg><span class="wp-block-social-link-label screen-reader-text">YouTube</span></a></li></ul>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Testing REST-based Web Services</title>
		<link>https://blog.xojo.com/2023/03/07/testing-rest-based-web-services/</link>
		
		<dc:creator><![CDATA[Geoff Perlman]]></dc:creator>
		<pubDate>Tue, 07 Mar 2023 15:16:55 +0000</pubDate>
				<category><![CDATA[Learning]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Beginner Tips]]></category>
		<category><![CDATA[Rapid Application Development]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[URLConnection]]></category>
		<category><![CDATA[Web Service]]></category>
		<category><![CDATA[webdev]]></category>
		<category><![CDATA[Xojo Programming Language]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=11358</guid>

					<description><![CDATA[Using Xojo's URLConnection to communicate with web services is pretty straightforward. But testing the actual REST API calls can get tricky. To make it easier to test and experiment with REST API calls, Paul created a app in Xojo that lets you test REST APIs. He called it RESTy in its original format back in 2015. You can download the updated project here built with Xojo 2022r4.1.]]></description>
										<content:encoded><![CDATA[
<p>Using Xojo&#8217;s URLConnection to communicate with web services is pretty straightforward. But testing the actual REST API calls can get tricky. To make it easier to test and experiment with REST API calls, Paul created an app in Xojo for doing just this. He called it RESTy in its original format back in 2015. The most recent version of the example project can be found in Xojo by choosing File > New Project, clicking on Examples then clicking on Communication > Internet > Web Services >RESTy.</p>



<span id="more-11358"></span>



<p>RESTy uses the <a href="https://documentation.xojo.com/api/networking/urlconnection.html#urlconnection">URLConnection</a> class to send a request to a web service and get a result. If the result is text (JSON, for example)&nbsp;it displays in the <strong>Response</strong> tab. Here, I am calling the <a href="https://documentation.xojo.com/topics/communication/internet/testing_a_web_service.html">Eddie&#8217;s Electronics web service</a> to return a list of all the customers by specifying the URL and clicking the Fetch button:</p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="965" height="1024" src="https://blog.xojo.com/wp-content/uploads/2023/03/getallcustomers-965x1024.png" alt="" class="wp-image-11365" srcset="https://blog.xojo.com/wp-content/uploads/2023/03/getallcustomers-965x1024.png 965w, https://blog.xojo.com/wp-content/uploads/2023/03/getallcustomers-283x300.png 283w, https://blog.xojo.com/wp-content/uploads/2023/03/getallcustomers-768x815.png 768w, https://blog.xojo.com/wp-content/uploads/2023/03/getallcustomers.png 1200w" sizes="(max-width: 965px) 100vw, 965px" /></figure>



<p>For other data (binary data such as pictures) you can use the Fetch to File button to save the request to a file.</p>



<p>The Authentication tab is used to provide Basic Authentication should the web service require it.</p>



<p>The Request Content tab can be used to provide Content data that the request might need. For example, the Eddie&#8217;s Electronics web service also lets you request the details for a specific customer by providing simple JSON containing the customer ID. To try this using RESTy app:</p>



<ol class="wp-block-list">
<li>Click on the Request Content Tab.</li>



<li>To indicate the customer you wish to retrieve, enter the following JSON into the field on that tab: <code>{"ID": 10039}</code></li>



<li>Select <strong>POST</strong> from the Send Method popup menu.</li>



<li>In the URL field, enter: <code>https://eews-demos.xojo.com/GetCustomer</code></li>



<li>Press the Fetch button.</li>
</ol>



<p>If you have entered everything correctly, will see the data for Caleb Horn in JSON format:</p>



<figure class="wp-block-image size-large"><img decoding="async" width="965" height="1024" src="https://blog.xojo.com/wp-content/uploads/2023/03/getonecustomer-1-965x1024.png" alt="" class="wp-image-11367" srcset="https://blog.xojo.com/wp-content/uploads/2023/03/getonecustomer-1-965x1024.png 965w, https://blog.xojo.com/wp-content/uploads/2023/03/getonecustomer-1-283x300.png 283w, https://blog.xojo.com/wp-content/uploads/2023/03/getonecustomer-1-768x815.png 768w, https://blog.xojo.com/wp-content/uploads/2023/03/getonecustomer-1.png 1200w" sizes="(max-width: 965px) 100vw, 965px" /></figure>



<p>And to see the JSON formatted nicely, click the Format JSON button:</p>



<figure class="wp-block-image size-large"><img decoding="async" width="965" height="1024" src="https://blog.xojo.com/wp-content/uploads/2023/03/formattedJSON-965x1024.png" alt="" class="wp-image-11368" srcset="https://blog.xojo.com/wp-content/uploads/2023/03/formattedJSON-965x1024.png 965w, https://blog.xojo.com/wp-content/uploads/2023/03/formattedJSON-283x300.png 283w, https://blog.xojo.com/wp-content/uploads/2023/03/formattedJSON-768x815.png 768w, https://blog.xojo.com/wp-content/uploads/2023/03/formattedJSON.png 1200w" sizes="(max-width: 965px) 100vw, 965px" /></figure>



<p>This will let you you explore calling various REST API services. You can explore the source code to see how it uses URLConnection to do so.</p>



<p>To be sure, RESTy is very basic, but you have the source code so you and add features to it and modify it for your own testing needs.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
