<?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>fiddler Archives | ZappySys Blog</title>
	<atom:link href="https://zappysys.com/blog/tag/fiddler/feed/" rel="self" type="application/rss+xml" />
	<link>https://zappysys.com/blog/tag/fiddler/</link>
	<description>SSIS / ODBC Drivers / API Connectors for JSON, XML, Azure, Amazon AWS, Salesforce, MongoDB and more</description>
	<lastBuildDate>Thu, 06 Nov 2025 21:21:16 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.4.4</generator>

<image>
	<url>https://zappysys.com/blog/wp-content/uploads/2023/01/cropped-zappysys-symbol-large-32x32.png</url>
	<title>fiddler Archives | ZappySys Blog</title>
	<link>https://zappysys.com/blog/tag/fiddler/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>How to call Amazon AWS API using SSIS (EC2, Lambda, API Gateway, SQS)</title>
		<link>https://zappysys.com/blog/how-to-call-amazon-aws-api-using-ssis-ec2-lambda-api-gateway-sqs/</link>
		
		<dc:creator><![CDATA[ZappySys]]></dc:creator>
		<pubDate>Fri, 03 Nov 2017 15:25:28 +0000</pubDate>
				<category><![CDATA[AWS (Amazon Web Services)]]></category>
		<category><![CDATA[REST API Integration]]></category>
		<category><![CDATA[S3 (Simple Storage Service)]]></category>
		<category><![CDATA[SSIS Connection Manager]]></category>
		<category><![CDATA[SSIS JSON Source (File/REST)]]></category>
		<category><![CDATA[SSIS OAuth Connection]]></category>
		<category><![CDATA[SSIS REST API Task]]></category>
		<category><![CDATA[SSIS XML Source (File / SOAP)]]></category>
		<category><![CDATA[aws]]></category>
		<category><![CDATA[ec2]]></category>
		<category><![CDATA[elasticsearch]]></category>
		<category><![CDATA[fiddler]]></category>
		<category><![CDATA[lambda]]></category>
		<category><![CDATA[oauth]]></category>
		<category><![CDATA[s3]]></category>
		<category><![CDATA[sqs]]></category>
		<category><![CDATA[ssis]]></category>
		<category><![CDATA[SSIS PowerPack]]></category>
		<guid isPermaLink="false">https://zappysys.com/blog/?p=2241</guid>

					<description><![CDATA[<p>Introduction In this blog post you will learn how to call Amazon AWS API using SSIS (virtually any API) without a single line of code (No more JAVA, C#, Ruby, Python). Yes you heard it right 🙂 . If you are a SSIS / ETL Developer or even coder everyone loves drag &#38; drop interface. SSIS [&#8230;]</p>
<p>The post <a href="https://zappysys.com/blog/how-to-call-amazon-aws-api-using-ssis-ec2-lambda-api-gateway-sqs/">How to call Amazon AWS API using SSIS (EC2, Lambda, API Gateway, SQS)</a> appeared first on <a href="https://zappysys.com/blog">ZappySys Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Introduction</h2>
<p><a href="https://zappysys.com/blog/wp-content/uploads/2017/11/amazon-web-services-logo.jpg"><img loading="lazy" decoding="async" class="wp-image-2317 alignleft" src="https://zappysys.com/blog/wp-content/uploads/2017/11/amazon-web-services-logo.jpg" alt="" width="322" height="181" srcset="https://zappysys.com/blog/wp-content/uploads/2017/11/amazon-web-services-logo.jpg 800w, https://zappysys.com/blog/wp-content/uploads/2017/11/amazon-web-services-logo-300x169.jpg 300w, https://zappysys.com/blog/wp-content/uploads/2017/11/amazon-web-services-logo-768x432.jpg 768w" sizes="(max-width: 322px) 100vw, 322px" /></a>In this blog post you will learn how to <strong>call Amazon AWS API using SSIS</strong> (virtually any API) without a single line of code (No more JAVA, C#, Ruby, Python). Yes you heard it right 🙂 . If you are a SSIS / ETL Developer or even coder everyone loves drag &amp; drop interface. SSIS has many advantages over other approaches such as Programming SDKs, Command Lines. Main advantage is ease of use, security and long term maintenance without learning expensive coding approach.</p>
<p>In this post we will use following components to show various possibilities to implement Amazon AWS API integration scenarios inside your ETL workflows.</p>
<div class="su-table su-table-alternate">
<div>
<table>
<colgroup>
<col width="100" />
<col /></colgroup>
<tbody>
<tr>
<td><img loading="lazy" decoding="async" src="//zappysys.com/images/ssis-powerpack/SSIS-Json-Source-Adapter.png" alt="Custom SSIS Components - Json Source" width="72" height="72" /></td>
<td><a href="https://zappysys.com/products/ssis-powerpack/ssis-json-file-source/">JSON / REST API Source</a> (REST API, JSON File or OData Service): Use this dataflow component when you have to <strong>fetch data from REST API webservice like a table</strong>. This component allows you to extract JSON data from webservice and de-normalize nested structure so you can save to Relational database such as SQL Server or any other target (Oracle, FlatFile, Excel, MySQL). This component also supports reading local JSON files or direct JSON string (Wildcard pattern supported too e.g. c:\data\file*.json).</td>
</tr>
<tr>
<td><img loading="lazy" decoding="async" src="//zappysys.com/onlinehelp/ssis-powerpack/scr/images/web-api-destination/ssis-web-api-destination.png" alt="SSIS Custom Target Adapter - Web API Destination" width="72" height="72" /></td>
<td><a href="https://zappysys.com/products/ssis-powerpack/ssis-web-api-destination-connector/">Web API Destination</a> (POST data to API URL) : Use this dataflow component when you have to call API inside Dataflow (see <a href="https://zappysys.com/blog/http-post-in-ssis-send-data-to-web-api-url-json-xml/" target="_blank" rel="noopener">POST to URL</a>). Possible Use case: Call Lambda function with various parameters for each input record found in database.</td>
</tr>
<tr>
<td><img loading="lazy" decoding="async" src="//zappysys.com/images/ssis-powerpack/ssis-rest-api-web-service-task.png" alt="Custom SSIS Tasks - SSIS Rest Api Web Service Task" width="72" height="72" /></td>
<td><a href="https://zappysys.com/products/ssis-powerpack/ssis-rest-api-web-service-task/">REST API Task</a> : Use this task when you don’t want to pull REST API data in tabular format but want to call rest API for POST data to server, DELETE data from server or things like download HTML page, extract Authentication tokens etc where you not necessarily dealing data in tabular format. This task also allows you many other options such as saving RAW response into variable or file.</td>
</tr>
<tr>
<td><img loading="lazy" decoding="async" src="//zappysys.com/images/ssis-powerpack/ssis-xml-source.png" alt="Custom SSIS Components - XML Source (Read File/SOAP/REST Web Service)" width="72" height="72" /></td>
<td><a href="https://zappysys.com/products/ssis-powerpack/ssis-xml-source/">XML Source</a> (SOAP, File, REST) : Use this dataflow component when you have to fetch data from XML or SOAP webservice and consume data like a table. This component allows you to extract data from webservice and save to SQL Server or any other target (Oracle, FlatFile, Excel, MySQL). This component also supports reading local XML files or direct XML string.</td>
</tr>
</tbody>
</table>
</div>
</div>
<h2><span id="Prerequisites">Prerequisites</span></h2>
<p>Before we do hello world demo for calling Amazon AWS API, you will need to make sure following prerequisites are met.</p>
<ol>
<li>SSIS designer installed. Sometimes it is referred as BIDS or SSDT (<a href="https://docs.microsoft.com/en-us/sql/ssdt/download-sql-server-data-tools-ssdt" target="_blank" rel="noopener">download it from Microsoft site</a>).</li>
<li>Basic knowledge of SSIS package development using <em>Microsoft SQL Server Integration Services</em>.</li>
<li>Access to valid AWS credentials (Access Key, Secret Key for your IAM User). <a href="http://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html" target="_blank" rel="noopener">Click here to learn more</a> about IAM users and Access Key/Secret Key</li>
<li>Make sure <a href="https://zappysys.com/products/ssis-powerpack/" target="_blank" rel="noopener"><em>SSIS PowerPack</em></a> is installed. <a href="https://zappysys.com/products/ssis-powerpack/download/" target="_blank" rel="noopener">Click here to download</a>.</li>
</ol>
<h2>Step-By-Step Example-1 (Call AWS API)</h2>
<p>Now lets call some simple GET API call using SSIS <a href="https://zappysys.com/products/ssis-powerpack/ssis-rest-api-web-service-task/" target="_blank" rel="noopener">REST API Task</a>.</p>
<ol>
<li>Install  <a href="https://zappysys.com/products/ssis-powerpack/" target="_blank" rel="noopener"><em>SSIS PowerPack</em></a> (Skip this step if you already installed SSIS PowerPack.</li>
<li>Open Visual Studio and create new Integration Services Project</li>
<li>Open SSIS Package and check your SSIS Toolbox you will see many tasks/components starting with ZS</li>
<li>From Control flow SSIS Toolbox Drag &amp; drop <a href="https://zappysys.com/products/ssis-powerpack/ssis-rest-api-web-service-task/" target="_blank" rel="noopener">ZS REST API Task</a>.</li>
<li>Double click the REST API task to configure it.</li>
<li>On REST API Task change URL Access mode drop down to <strong>URL from Connection</strong></li>
<li>Now in the connection dropdown click New <strong>ZS-OAUTH</strong> connection and configure connection as below
<ol>
<li>Once you see OAuth connection dialog box change Provider Type from Custom to <strong>Amazon AWS API</strong> (v4)</li>
<li>In the ClientId enter your AWS <strong>Access Key</strong></li>
<li>In the ClientSecret enter your AWS <strong>Secret Key</strong></li>
<li>Click OK to save connection
<div id="attachment_2258" style="width: 720px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2017/11/ssis-oauth-connection-amazon-aws-api-provider-use-signature-v4.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-2258" class="size-full wp-image-2258" src="https://zappysys.com/blog/wp-content/uploads/2017/11/ssis-oauth-connection-amazon-aws-api-provider-use-signature-v4.png" alt="Configure SSIS OAuth Connection - Use Amazon AWS API Provider, Enter Access Key, Secret Key" width="710" height="535" srcset="https://zappysys.com/blog/wp-content/uploads/2017/11/ssis-oauth-connection-amazon-aws-api-provider-use-signature-v4.png 710w, https://zappysys.com/blog/wp-content/uploads/2017/11/ssis-oauth-connection-amazon-aws-api-provider-use-signature-v4-300x226.png 300w" sizes="(max-width: 710px) 100vw, 710px" /></a><p id="caption-attachment-2258" class="wp-caption-text">Configure SSIS OAuth Connection &#8211; Use Amazon AWS API Provider, Enter Access Key, Secret Key</p></div></li>
</ol>
</li>
<li>On REST API Task change few more settings as below
<ol>
<li>Enter API URL you like to call (In our case we will use <a href="http://docs.aws.amazon.com/AmazonS3/latest/API/RESTServiceGET.html" target="_blank" rel="noopener">S3 API (Simple Storage Service)</a>. We assume you have ListBucket permission to make this call. If you dont have such permission try to get Full path of File (choose small file) . You have to tweak API url to adjust Service Type, Region,Bucket, Path<br />
<pre class="crayon-plain-tag">https://s3.us-east-1.amazonaws.com
-- OR -- Use below (list files) if you have single bucket permission---
https://s3.us-east-1.amazonaws.com/YOUR-BUCKET</pre>
</li>
<li>Click Test Request. If you have valid Permission and setup looks ok then you will see Response window like below. Using this technique you can call any API to execute AWS operations (E.g. start EC2 VM, Create SQS Queue, Call Lambda Function, Drop or Update resource)
<div id="attachment_2260" style="width: 722px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2017/11/ssis-call-amazon-aws-api-without-sdk-s3-ec2-sqs-lambda-api-gateway.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-2260" class="size-full wp-image-2260" src="https://zappysys.com/blog/wp-content/uploads/2017/11/ssis-call-amazon-aws-api-without-sdk-s3-ec2-sqs-lambda-api-gateway.png" alt="Calling Amazon AWS API Using SSIS REST API Task Example. (Call any AWS API without SDK. such as EC2 API, SQS API, Lambda API, Redshift API, DynamoDB API)" width="712" height="615" srcset="https://zappysys.com/blog/wp-content/uploads/2017/11/ssis-call-amazon-aws-api-without-sdk-s3-ec2-sqs-lambda-api-gateway.png 712w, https://zappysys.com/blog/wp-content/uploads/2017/11/ssis-call-amazon-aws-api-without-sdk-s3-ec2-sqs-lambda-api-gateway-300x259.png 300w" sizes="(max-width: 712px) 100vw, 712px" /></a><p id="caption-attachment-2260" class="wp-caption-text">Calling Amazon AWS API Using SSIS REST API Task Example. (Call any AWS API without SDK. such as EC2 API, SQS API, Lambda API, Redshift API, DynamoDB API)</p></div></li>
</ol>
</li>
</ol>
<h2>Step-By-Step Example-2 (Loading data from AWS API to SQL Server)</h2>
<p>Now lets do more interesting scenario. We will call AWS S3 API to get S3 File list from Bucket. After extract we will save that list to SQL Server Table. Since Amazon S3 API is XML based API we will use ZappySys <a href="https://zappysys.com/products/ssis-powerpack/ssis-xml-source/" target="_blank" rel="noopener">SSIS XML Source</a>. For JSON based API use JSON Source instead. XML Source / JSON Source both can parse API response into Rows and Columns so you can easily store it into SQL Server. Now lets see how to do this.</p>
<ol>
<li>From Control flow SSIS Toolbox Drag &amp; drop Data Flow Task</li>
<li>Double click Data Flow Task. From SSIS Toolbox Drag &amp; drop <a href="https://zappysys.com/products/ssis-powerpack/ssis-xml-source/" target="_blank" rel="noopener">ZS SSIS XML Source</a>.</li>
<li>Double click the XML Source to configure it.</li>
<li>In the URL text box enter API URL like below to list S3 Files for specified bucket (Change YOUR-BUCKET to your own name)<br />
<pre class="crayon-plain-tag">https://s3.us-east-1.amazonaws.com/YOUR-BUCKET</pre>
</li>
<li>Now check Use Credentials and Select same Amazon API connection we created in previous example.</li>
<li>Click on Select Filter (This step allows us to flatten the XML hierarchy. Select the node which is Array icon like below. If prompted to treat selected node as array click Yes.
<div id="attachment_2319" style="width: 958px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2017/11/ssis-read-data-amazon-aws-api-get-s3-bucket-file-list-xml-source.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-2319" class="size-full wp-image-2319" src="https://zappysys.com/blog/wp-content/uploads/2017/11/ssis-read-data-amazon-aws-api-get-s3-bucket-file-list-xml-source.png" alt="Configure SSIS XML Source - Get Amazon S3 File List from specific bucket (AWS API)" width="948" height="728" srcset="https://zappysys.com/blog/wp-content/uploads/2017/11/ssis-read-data-amazon-aws-api-get-s3-bucket-file-list-xml-source.png 948w, https://zappysys.com/blog/wp-content/uploads/2017/11/ssis-read-data-amazon-aws-api-get-s3-bucket-file-list-xml-source-300x230.png 300w, https://zappysys.com/blog/wp-content/uploads/2017/11/ssis-read-data-amazon-aws-api-get-s3-bucket-file-list-xml-source-768x590.png 768w" sizes="(max-width: 948px) 100vw, 948px" /></a><p id="caption-attachment-2319" class="wp-caption-text">Configure SSIS XML Source &#8211; Get Amazon S3 File List from specific bucket (AWS API)</p></div></li>
<li>Click Preview to see your data. Click OK to save.
<div id="attachment_2320" style="width: 705px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2017/11/ssis-preview-data-amazon-aws-api-get-s3-bucket-file-list-xml-source.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-2320" class="size-full wp-image-2320" src="https://zappysys.com/blog/wp-content/uploads/2017/11/ssis-preview-data-amazon-aws-api-get-s3-bucket-file-list-xml-source.png" alt="Preview Data in XML Source - Amazon S3 File List (Calling AWS API)" width="695" height="372" srcset="https://zappysys.com/blog/wp-content/uploads/2017/11/ssis-preview-data-amazon-aws-api-get-s3-bucket-file-list-xml-source.png 695w, https://zappysys.com/blog/wp-content/uploads/2017/11/ssis-preview-data-amazon-aws-api-get-s3-bucket-file-list-xml-source-300x161.png 300w" sizes="(max-width: 695px) 100vw, 695px" /></a><p id="caption-attachment-2320" class="wp-caption-text">Preview Data in XML Source &#8211; Amazon S3 File List (Calling AWS API)</p></div></li>
<li>Now attach your XML source to target like OLEDB Destination to load data to SQL Server or other Target (e.g. Oracle, MySQL)</li>
<li>Execute SSIS Package to load data from Amazon AWS API to SQL Server.
<div id="attachment_2321" style="width: 917px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2017/11/ssis-example-read-amazon-to-sql-server-call-aws-api.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-2321" class="size-full wp-image-2321" src="https://zappysys.com/blog/wp-content/uploads/2017/11/ssis-example-read-amazon-to-sql-server-call-aws-api.png" alt="SSIS Package - Read Amazon S3 File List and load into SQL Server Table (Call AWS API Example)" width="907" height="597" srcset="https://zappysys.com/blog/wp-content/uploads/2017/11/ssis-example-read-amazon-to-sql-server-call-aws-api.png 907w, https://zappysys.com/blog/wp-content/uploads/2017/11/ssis-example-read-amazon-to-sql-server-call-aws-api-300x197.png 300w, https://zappysys.com/blog/wp-content/uploads/2017/11/ssis-example-read-amazon-to-sql-server-call-aws-api-768x506.png 768w" sizes="(max-width: 907px) 100vw, 907px" /></a><p id="caption-attachment-2321" class="wp-caption-text">SSIS Package &#8211; Read Amazon S3 File List and load into SQL Server Table (Call AWS API Example)</p></div></li>
</ol>
<h2></h2>
<h2><span id="Using_SSIS_JSON_Source_to_read_from_REST_API_and_load_into_SQL_Server">File Upload Example &#8211; Low level API &#8211; Call PUT request</span></h2>
<p>There will be a time when you want to take total control of your AWS API calls. One example is if you wish to Upload / Write data to S3 then components like ZappySys Amazon S3 CSV Destination or Amazon Storage Task might need additional permission such as <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html" target="_blank" rel="noopener">HeadObject</a> . If you have only write permission on bucket then this will fail to execute Task. In such case you can use REST API Task like below way.</p>
<p>Basically we exported data from Relation Database to CSV File using <a href="https://zappysys.com/products/ssis-powerpack/ssis-export-csv-file-task/" target="_blank" rel="noopener">Export CSV File Task</a> and then we uploaded file content using REST API Task.</p>
<h3>Upload Text File to S3 (i.e. JSON, CSV, XML &#8230;)</h3>
<p>Your URL Format can be like this. Region codes can be <a href="https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints" target="_blank" rel="noopener">found here</a></p><pre class="crayon-plain-tag">https://YOUR-BUCKET.s3.YOUR-REGION.amazonaws.com/YOUR-FILE
https://YOUR-BUCKET.s3.YOUR-REGION.amazonaws.com/SOME-FOLDER/SOME-SUB-FOLDER/YOUR-FILE</pre><p>
&nbsp;</p>
<div id="attachment_8925" style="width: 902px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2017/11/ssis-upload-file-to-s3-bucket-low-level-rest-api-put-request.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-8925" class="size-full wp-image-8925" src="https://zappysys.com/blog/wp-content/uploads/2017/11/ssis-upload-file-to-s3-bucket-low-level-rest-api-put-request.png" alt="Upload file to Amazon S3 - Call low level API (PUT request)" width="892" height="752" srcset="https://zappysys.com/blog/wp-content/uploads/2017/11/ssis-upload-file-to-s3-bucket-low-level-rest-api-put-request.png 892w, https://zappysys.com/blog/wp-content/uploads/2017/11/ssis-upload-file-to-s3-bucket-low-level-rest-api-put-request-300x253.png 300w, https://zappysys.com/blog/wp-content/uploads/2017/11/ssis-upload-file-to-s3-bucket-low-level-rest-api-put-request-768x647.png 768w" sizes="(max-width: 892px) 100vw, 892px" /></a><p id="caption-attachment-8925" class="wp-caption-text">Upload file to Amazon S3 &#8211; Call low level API (PUT request)</p></div>
<p>&nbsp;</p>
<h3>Upload Binary File to S3 (i.e. Zip, mp3, gzip, png, jpeg&#8230;)</h3>
<p>Above method only works for Text Files. If you have Binary files (e.g. Zip file, mp3, png, jpeg) then you can use below workaround.</p>
<ol>
<li>Check Is Multi Part / File Upload Option next to the Body editor (<a href="https://zappysys.com/blog/rest-api-file-upload-using-ssis-multi-part-post/" target="_blank" rel="noopener">Read this Post for more info</a>)</li>
<li>In the Body enter file path like below<br />
<pre class="crayon-plain-tag">@c:\folder\some-file.xyz</pre>
</li>
<li>That&#8217;s it, now your binary file can be uploaded to S3 same way as Text file we uploaded in earlier section.</li>
</ol>
<p>&nbsp;</p>
<p><strong>NOTE:</strong> <span style="text-decoration: underline;">Binary file option only works in the latest Build Uploaded after 5/21/2020</span></p>
<p>&nbsp;</p>
<h2><span id="Using_SSIS_JSON_Source_to_read_from_REST_API_and_load_into_SQL_Server">Debugging AWS API Command Line Requests using Fiddler (Web Proxy)</span></h2>
<p>Before we see more examples of calling AWS API lets first learn how to capture Request data using <a href="https://aws.amazon.com/cli/" target="_blank" rel="noopener">aws command line</a> (CLI). We will use <a href="https://zappysys.com/blog/how-to-use-fiddler-to-analyze-http-web-requests/" target="_blank" rel="noopener">Fiddler</a> to capture AWS API Requests.</p>
<ol>
<li>Download and <a href="https://www.telerik.com/download/fiddler" target="_blank" rel="noopener">Install Fiddler</a> (Free Tool)</li>
<li>Install  <a href="https://aws.amazon.com/cli/" target="_blank" rel="noopener">aws command line</a></li>
<li>Open command prompt and type aws configure command to set credentials.  For more info see <a href="http://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html" target="_blank" rel="noopener">configure aws credentials</a> .. see below example.<br />
<pre class="crayon-plain-tag">c:&gt; aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: us-west-2
Default output format [None]: json</pre>
</li>
<li>Once you set credentials launch Fiddler</li>
<li>On the Fiddler Tools menu &gt; Click Fiddler Option &gt; HTTPS &gt; Check <strong>Decrypt HTTPS Traffic</strong></li>
<li>Once you do that you may be asked to Trust Fiddler Certificate click OK</li>
<li>Close and Open Fiddler to apply setting</li>
<li>Now any command you type in aws command line will show up in fiddler. This command we can use in SSIS REST API Task or XML Source to call virtually Any API AWS supports.</li>
<li>For example to call some lambda function (supply input json data from file) use below command and watch Fiddler Trace. Notice we added <strong>&#8211;no-verify-ssl</strong> option so we can see requests in custom web proxy like fiddler (This option will trust Fiddler certificate).<br />
<pre class="crayon-plain-tag">c:\&gt;aws lambda invoke --function-name HelloWorld c:\temp\outputfile.txt --no-verify-ssl --payload file://c://test/customer.json</pre>
&nbsp;</p>
<div id="attachment_2314" style="width: 1175px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2017/11/ssis-get-raw-rest-request-aws-commandline-cli-capture-fiddler.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-2314" class="size-full wp-image-2314" src="https://zappysys.com/blog/wp-content/uploads/2017/11/ssis-get-raw-rest-request-aws-commandline-cli-capture-fiddler.png" alt="Capture AWS Commandline (CLI) request using Fiddler" width="1165" height="640" srcset="https://zappysys.com/blog/wp-content/uploads/2017/11/ssis-get-raw-rest-request-aws-commandline-cli-capture-fiddler.png 1165w, https://zappysys.com/blog/wp-content/uploads/2017/11/ssis-get-raw-rest-request-aws-commandline-cli-capture-fiddler-300x165.png 300w, https://zappysys.com/blog/wp-content/uploads/2017/11/ssis-get-raw-rest-request-aws-commandline-cli-capture-fiddler-768x422.png 768w, https://zappysys.com/blog/wp-content/uploads/2017/11/ssis-get-raw-rest-request-aws-commandline-cli-capture-fiddler-1024x563.png 1024w" sizes="(max-width: 1165px) 100vw, 1165px" /></a><p id="caption-attachment-2314" class="wp-caption-text">Capture AWS Commandline (CLI) request using Fiddler</p></div></li>
<li>Once you have this information you can use it inside ZappySys Components which supports API calls (e.g. REST API Task, JSON Source, XML Source). For this example we will use REST API Task to call same Lambda Function. Things to change to call any API is URL, Method, ContentType, Body. If its GET call then you wont have Body.
<div id="attachment_2315" style="width: 826px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2017/11/ssis-call-amazon-aws-lambda-function-using-rest-api-task.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-2315" class="size-full wp-image-2315" src="https://zappysys.com/blog/wp-content/uploads/2017/11/ssis-call-amazon-aws-lambda-function-using-rest-api-task.png" alt="Calling Amazon AWS Lambda Function using SSIS REST API Task" width="816" height="659" srcset="https://zappysys.com/blog/wp-content/uploads/2017/11/ssis-call-amazon-aws-lambda-function-using-rest-api-task.png 816w, https://zappysys.com/blog/wp-content/uploads/2017/11/ssis-call-amazon-aws-lambda-function-using-rest-api-task-300x242.png 300w, https://zappysys.com/blog/wp-content/uploads/2017/11/ssis-call-amazon-aws-lambda-function-using-rest-api-task-768x620.png 768w" sizes="(max-width: 816px) 100vw, 816px" /></a><p id="caption-attachment-2315" class="wp-caption-text">Calling Amazon AWS Lambda Function using SSIS REST API Task</p></div>
<p>&nbsp;</li>
<li>That&#8217;s it.. You can now take this same concept and call virtually API AWS API right insight SSIS without any SDK or command line tools.</li>
</ol>
<h2>Call API Gateway Endpoint (Default URL)</h2>
<p>If you wish to call API hosted on Amazon API Gateway Service then enter direct URL. You have to use OAuth Connection (AWS v4 Provider) as previous section.</p>
<p>Typical URL may look like as below if you calling API gateway Endpoint.</p><pre class="crayon-plain-tag">https://c5hhigf5mh.execute-api.us-east-1.amazonaws.com/prod/pets</pre><p>
<h2>Call AWS API with Region and Custom Service Name</h2>
<p>There will be a time when you will have to call AWS API URL and it doesnt indicate Region / Service but you have to supply part of signature for Authentication.  In this case just enter AWS Service and Region along with ClientID, Secret Fields (Custom Service and  Region attributes were introduced in v3.0 or higher so if you are not seeing on OAuth Connection UI then you probably running older version).</p>
<p>&nbsp;</p>
<h2>Call Amazon Athena API</h2>
<p>Check <a href="https://zappysys.com/blog/import-export-data-amazon-athena-using-ssis/" target="_blank" rel="noopener">this article</a> for detailed instructions</p>
<h2><span id="Using_SSIS_JSON_Source_to_read_from_REST_API_and_load_into_SQL_Server">Call AWS EC2 API</span></h2>
<p>Here is an example of calling EC2 API. This is example of listing EC2 instances.</p>
<p>Request:</p><pre class="crayon-plain-tag">POST https://ec2.us-east-1.amazonaws.com/
Content-Type: application/x-www-form-urlencoded; charset=utf-8

Action=DescribeInstances&amp;Version=2016-11-15</pre><p>
<h2>Call <span id="Using_SSIS_JSON_Source_to_read_from_REST_API_and_load_into_SQL_Server">AWS </span>Lambda API</h2>
<p>Here is some example of calling Lambda function</p>
<p>Request:</p><pre class="crayon-plain-tag">POST https://lambda.YOUR-REGION.amazonaws.com/2015-03-31/functions/YOUR-FUNCTION/invocations

{you-json-input-goes-in-body}</pre><p>
<h2></h2>
<h2>Call AWS ElasticSearch</h2>
<p>If you are using <a href="https://aws.amazon.com/elasticsearch-service/" target="_blank" rel="noopener">AWS Hosted Managed ElasticSearch</a> then also you can use OAuth AWS v4 Provider as below. Assuming you have <a href="https://stackoverflow.com/questions/33751580/how-to-access-kibana-from-amazon-elasticsearch-service" target="_blank" rel="noopener">configured correct Policy</a> to allow your IAM User Account / IP address.</p>
<div id="attachment_6277" style="width: 836px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2017/11/ssis-call-aws-elasticsearch-rest-api-sign-v4.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-6277" class="size-full wp-image-6277" src="https://zappysys.com/blog/wp-content/uploads/2017/11/ssis-call-aws-elasticsearch-rest-api-sign-v4.png" alt="Call AWS Hosted ElasticSearch REST API in SSIS (V4 Request Signing)" width="826" height="730" srcset="https://zappysys.com/blog/wp-content/uploads/2017/11/ssis-call-aws-elasticsearch-rest-api-sign-v4.png 826w, https://zappysys.com/blog/wp-content/uploads/2017/11/ssis-call-aws-elasticsearch-rest-api-sign-v4-300x265.png 300w, https://zappysys.com/blog/wp-content/uploads/2017/11/ssis-call-aws-elasticsearch-rest-api-sign-v4-768x679.png 768w" sizes="(max-width: 826px) 100vw, 826px" /></a><p id="caption-attachment-6277" class="wp-caption-text">Call AWS Hosted ElasticSearch REST API in SSIS (V4 Request Signing)</p></div>
<h2>Call <span id="Using_SSIS_JSON_Source_to_read_from_REST_API_and_load_into_SQL_Server">AWS </span>API using Native Task/Components</h2>
<p>ZappySys provides many High quality Tasks / Components for AWS integration. See below list.</p>
<table id="cat_amazon_aws_cloud" style="margin: 0px 0px 1.5em !important; padding: 0px; outline: 0px; border: 1px solid #cccccc !important; border-image: none !important !important; width: 973px; color: #333333; text-transform: none; line-height: 2; text-indent: 0px; letter-spacing: normal; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 13px; font-style: normal; font-weight: normal; word-spacing: 0px; vertical-align: baseline; white-space: normal; border-collapse: collapse !important; border-spacing: 0px; orphans: 2; widows: 2; background-color: #ffffff; font-variant-ligatures: normal; font-variant-caps: normal; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">
<tbody>
<tr class="su-even">
<th colspan="3"><strong>Amazon AWS Cloud Integration</strong></th>
</tr>
<tr>
<td><img loading="lazy" decoding="async" src="https://i1.wp.com/zappysys.com/images/ssis-powerpack/SSIS-Amazon-S3-Cloud-Task.png?w=720&amp;ssl=1" alt="Custom SSIS Tasks - Amazon S3 Task" width="24" height="24" /> <a href="https://zappysys.com/products/ssis-powerpack/ssis-amazon-s3-task/" target="_blank" rel="noopener">Amazon S3 Task</a></td>
<td><img loading="lazy" decoding="async" src="https://i0.wp.com/zappysys.com/images/ssis-powerpack/SSIS-Amazon-Redshift-Data-Transfer-Task.png?w=720&amp;ssl=1" alt="Custom SSIS Tasks - Amazon Redshift Data Transfer Task" width="24" height="24" /> <a href="https://zappysys.com/products/ssis-powerpack/ssis-amazon-redshift-data-transfer-task/" target="_blank" rel="noopener">Amazon Redshift Data Transfer Task</a></td>
<td><img loading="lazy" decoding="async" src="https://i1.wp.com/zappysys.com/images/ssis-powerpack/SSIS-Amazon-Redshift-ExecuteSQL-Task.png?w=720&amp;ssl=1" alt="Custom SSIS Tasks - Amazon Redshift ExecuteSql Task" width="24" height="24" /> <a href="https://zappysys.com/products/ssis-powerpack/ssis-redshift-execute-sql-task/" target="_blank" rel="noopener">Amazon Redshift ExecuteSql Task</a></td>
</tr>
<tr class="su-even">
<td><img loading="lazy" decoding="async" src="https://i0.wp.com/zappysys.com/images/ssis-powerpack/ssis-amazon-redshift-cluster-management-task.png?w=720&amp;ssl=1" alt="Custom SSIS Tasks - Amazon Redshift Cluster Management Task" width="24" height="24" /> <a href="https://zappysys.com/products/ssis-powerpack/ssis-amazon-redshift-cluster-management-task/" target="_blank" rel="noopener">Amazon Redshift Cluster Management Task</a></td>
<td><img loading="lazy" decoding="async" src="https://i1.wp.com/zappysys.com/images/ssis-powerpack/SSIS-Amazon-DynamoDB-Source-Adapter.png?w=720&amp;ssl=1" alt="Custom SSIS Components - Amazon DynamoDB Source" width="24" height="24" /> <a href="https://zappysys.com/products/ssis-powerpack/ssis-dynamodb-source/" target="_blank" rel="noopener">Amazon DynamoDB Source</a></td>
<td><img loading="lazy" decoding="async" src="https://i1.wp.com/zappysys.com/images/ssis-powerpack/SSIS-Amazon-DynamoDB-Destination-Adapter.png?w=720&amp;ssl=1" alt="Custom SSIS Components - Amazon DynamoDB Destination" width="24" height="24" /> <a href="https://zappysys.com/products/ssis-powerpack/ssis-dynamodb-destination/" target="_blank" rel="noopener">Amazon DynamoDB Destination</a></td>
</tr>
<tr>
<td><img loading="lazy" decoding="async" src="https://i0.wp.com/zappysys.com/onlinehelp/ssis-powerpack/scr/images/amazon-redshift-source/ssis-amazon-redshift-source.png?w=720&amp;ssl=1" alt="Custom SSIS Components - Amazon Redshift Source" width="24" height="24" /> <a href="https://zappysys.com/products/ssis-powerpack/ssis-amazon-redshift-source-connector/" target="_blank" rel="noopener">Amazon Redshift Source</a></td>
<td><img loading="lazy" decoding="async" src="https://i1.wp.com/zappysys.com/images/ssis-powerpack/SSIS-Amazon-DynamoDB-Source-Adapter.png?w=720&amp;ssl=1" alt="Custom SSIS Components - Amazon DynamoDB Source" width="24" height="24" /> Amazon SQS Queue Source</td>
<td> <img loading="lazy" decoding="async" src="https://i1.wp.com/zappysys.com/images/ssis-powerpack/SSIS-Amazon-DynamoDB-Source-Adapter.png?w=720&amp;ssl=1" alt="Custom SSIS Components - Amazon DynamoDB Source" width="24" height="24" /> Amazon SQS Queue Destination</td>
</tr>
</tbody>
</table>
<h2>Conclusion</h2>
<p>Amazon AWS Cloud integration from SSIS packages becoming more and more common scenario. ZappySys provides easy to use no coding connectors to achieve many time consuming scenarios. Having clean drag and drop approach is not only faster but more secure using inbuilt SSIS framework. <a href="https://zappysys.com/products/ssis-powerpack/">Try SSIS PowerPack</a> to explore many other scenarios not discussed in this article.</p>
<p>The post <a href="https://zappysys.com/blog/how-to-call-amazon-aws-api-using-ssis-ec2-lambda-api-gateway-sqs/">How to call Amazon AWS API using SSIS (EC2, Lambda, API Gateway, SQS)</a> appeared first on <a href="https://zappysys.com/blog">ZappySys Blog</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>How to read / write data in Google BigQuery using SSIS</title>
		<link>https://zappysys.com/blog/get-data-google-bigquery-using-ssis/</link>
		
		<dc:creator><![CDATA[ZappySys]]></dc:creator>
		<pubDate>Sun, 16 Jul 2017 01:10:44 +0000</pubDate>
				<category><![CDATA[Google API]]></category>
		<category><![CDATA[REST API Integration]]></category>
		<category><![CDATA[SSIS JSON Generator Transform]]></category>
		<category><![CDATA[SSIS JSON Source (File/REST)]]></category>
		<category><![CDATA[SSIS WEB API Destination]]></category>
		<category><![CDATA[API Integration]]></category>
		<category><![CDATA[big data]]></category>
		<category><![CDATA[fiddler]]></category>
		<category><![CDATA[google api]]></category>
		<category><![CDATA[Google BigQuery]]></category>
		<category><![CDATA[rest api]]></category>
		<category><![CDATA[ssis json source]]></category>
		<category><![CDATA[SSIS PowerPack]]></category>
		<category><![CDATA[ssis web api destination]]></category>
		<guid isPermaLink="false">http://zappysys.com/blog/?p=1563</guid>

					<description><![CDATA[<p>Introduction Google BigQuery is a fully managed Big Data platform to run queries against large scale data. In this article you will learn how to integrate Google BigQuery data into Microsoft SQL Server using SSIS. We will leverage highly flexible JSON based REST API Connector and OAuth Connection to import / export data from Google [&#8230;]</p>
<p>The post <a href="https://zappysys.com/blog/get-data-google-bigquery-using-ssis/">How to read / write data in Google BigQuery using SSIS</a> appeared first on <a href="https://zappysys.com/blog">ZappySys Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Introduction</h2>
<div class="su-note"  style="border-color:#e5de9d;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;"><div class="su-note-inner su-u-clearfix su-u-trim" style="background-color:#FFF8B7;border-color:#ffffff;color:#333333;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;"><strong>UPDATE:</strong> ZappySys has released a brand new <a href="https://zappysys.com/api/integration-hub/google-bigquery-connector/">API Connector for BigQuery Online</a> which makes it much simpler to <strong>Read/Write BigQuery Data in SSIS</strong> compared to the steps listed in this article. You can still use steps from this article but if you are new to API or want to avoid learning curve with API then use newer approach.</p>
<p>Please visit <a href="https://zappysys.com/api/integration-hub/">this page to see all</a> Pre-Configured ready to use API connectors which you can use in <a href="https://zappysys.com/products/ssis-powerpack/ssis-api-source/">SSIS API Source</a> / <a href="https://zappysys.com/products/ssis-powerpack/ssis-api-destination/">SSIS API Destination</a> OR <a href="https://zappysys.com/products/odbc-powerpack/odbc-api-driver/">API ODBC Driver</a> (for non-SSIS Apps such as Excel, Power BI, Informatica).</p>
</div></div>
<p style="text-align: left;"><a href="//zappysys.com/blog/wp-content/uploads/2017/07/google-big-query-integration-1.png"><img loading="lazy" decoding="async" class="alignleft wp-image-1959" src="//zappysys.com/blog/wp-content/uploads/2017/07/google-big-query-integration-1-150x150.png" alt="Google BigQuery API Integration" width="91" height="91" srcset="https://zappysys.com/blog/wp-content/uploads/2017/07/google-big-query-integration-1-150x150.png 150w, https://zappysys.com/blog/wp-content/uploads/2017/07/google-big-query-integration-1.png 257w" sizes="(max-width: 91px) 100vw, 91px" /></a><a href="https://cloud.google.com/bigquery/" target="_blank" rel="noopener">Google BigQuery</a> is a fully managed <strong>Big Data platform</strong> to run queries against large scale data. In this article you will learn how to integrate <strong>Google BigQuery</strong> data into <strong>Microsoft SQL Server</strong> using <strong>SSIS</strong>. We will leverage highly flexible <a href="https://zappysys.com/products/ssis-powerpack/" target="_blank" rel="noopener">JSON based REST API Connector</a> and <strong>OAuth Connection</strong> to import / export data from <a href="https://cloud.google.com/bigquery/docs/reference/rest/v2/" target="_blank" rel="noopener">Google BigQuery API</a> just in a few clicks.</p>
<p style="text-align: left;">If you are looking for a similar product inside Amazon AWS Cloud then <a href="https://zappysys.com/blog/import-export-data-amazon-athena-using-ssis/" target="_blank" rel="noopener">check an article about Amazon Athena</a>.</p>
<h2><span id="Prerequisites">Prerequisites</span></h2>
<p>Before we look into a Step-By-Step section to extract and load data from BigQuery to SQL Server let&#8217;s make sure you meet the following requirements:</p>
<ol>
<li>SSIS designer installed. Sometimes it is referred as BIDS or SSDT (<a href="https://docs.microsoft.com/en-us/sql/ssdt/download-sql-server-data-tools-ssdt" target="_blank" rel="noopener">download it from Microsoft site</a>).</li>
<li>Basic knowledge of SSIS package development using <em>Microsoft SQL Server Integration Services</em>.</li>
<li><a href="//zappysys.com/products/ssis-powerpack/" target="_blank" rel="noopener"><em>ZappySys SSIS PowerPack</em> installed</a>. Click on the link to download a FREE trial.</li>
<li>You have basic familiarity with REST API concepts and Google BigQuery API. This post uses <a href="https://cloud.google.com/bigquery/public-data/" target="_blank" rel="noopener">free Public Dataset</a> to query BigQuery table so <em>no billing</em> is required to get your hands dirty 🙂 However, if you like to query your own dataset then make sure you have at least one BigQuery dataset and one table with some sample data created (this part <em>does require</em> billing enabled). Read a <a href="https://cloud.google.com/bigquery/quickstart-web-ui" target="_blank" rel="noopener">Google Quickstart article</a> for more information on how to create a new BigQuery dataset and a table.</li>
</ol>
<h2>Understanding Google BigQuery Object Heirarchy</h2>
<p>Google BigQuery has 3 main concepts below.</p>
<ul style="list-style-type: circle;">
<li>Project
<ul style="list-style-type: circle;">
<li>Dataset
<ul style="list-style-type: circle;">
<li>Table
<ul style="list-style-type: circle;">
<li>Query requests (each query creates a unique JobID &#8211; valid for 24 hours from which you can read data)</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<p>So in order to create BigQuery table you always need Project and then Dataset under that project. You can group objects around Project / Datasets. When you query you can supply fully qualified name of your table in FROM clause (e.g. <pre class="crayon-plain-tag">select count(*) from `bigquery-public-data.usa_names.usa_1910_2013`</pre>  Here <strong>bigquery-public-data</strong> is project name, <strong>usa_names</strong> is dataset and <strong>usa_1910_2013</strong>  is table). So lets get started with Read operation first and then we will cover write operation. For Read operation we will use public dataset so we can quickly show you demo without too many steps but later we will cover how to automate create / delete of Dataset / Tables using API calls.</p>
<p>So let&#8217;s get started.</p>
<h2>Read data from Google BigQuery using SSIS</h2>
<p>Basically you can query Google BigQuery data in two ways: In this article we will not cover 2nd method.</p>
<ul>
<li><strong>Method-1</strong>: Query data using <a href="https://cloud.google.com/bigquery/docs/reference/rest/v2/jobs/query" target="_blank" rel="noopener"><em>jobs/query</em> method in BigQuery API</a>. Use it if you expect to get a result in a fairly short amount of time. This API method generates a temp table which gets deleted after 24 hours. You can read data within that time frame using newly created <em>JobId</em> reference.<br />
<div class="su-note"  style="border-color:#e5dd9d;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;"><div class="su-note-inner su-u-clearfix su-u-trim" style="background-color:#FFF7B7;border-color:#ffffff;color:#333333;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;"><strong>NOTE:</strong> If you have records that sum up to more than 10MB of data or ~10,000 rows (assuming 1 row uses 1KB of data) then you need to proceed with two-step process as explained below.</div></div></li>
<li><strong>Method-2</strong>: Export SQL query result using <a href="https://cloud.google.com/bigquery/docs/reference/rest/v2/jobs/insert" target="_blank" rel="noopener"><em>jobs/insert</em> method in BigQuery API</a>. Use this method if you expect a query to take a long time to finish.</li>
</ul>
<p>Now let&#8217;s see how to query Google BigQuery data using SSIS 🙂</p>
<h3>Create Google API Project and Register OAuth App</h3>
<p>To use any <a href="https://developers.google.com/apis-explorer/#p/" target="_blank" rel="noopener">Google API</a> firstly you have to finish two tasks:</p>
<ol>
<li><a href="//zappysys.com/blog/register-google-oauth-application-get-clientid-clientsecret/" target="_blank" rel="noopener">Create Google API Project</a> and obtain projectId (see next section).</li>
<li><a href="https://console.cloud.google.com/apis/library/bigquery.googleapis.com" target="_blank" rel="noopener">Enable BigQuery API</a></li>
<li>Register your own Google OAuth App and obtain <strong>ClientId</strong> and <strong>Client Secret</strong>.</li>
</ol>
<p>Check step-by-step instructions on <a href="//zappysys.com/blog/register-google-oauth-application-get-clientid-clientsecret/" target="_blank" rel="noopener">how to create Google API Project and create OAuth App for Google</a>. During instructions make sure you enable BigQuery API (screenshots may differ).</p>
<div class="su-note"  style="border-color:#e5de9d;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;"><div class="su-note-inner su-u-clearfix su-u-trim" style="background-color:#fff8b7;border-color:#ffffff;color:#333333;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;">NOTE: For BigQuery API you must use custom app option on OAuth connection. Google used to allow Default App but recent policy changes requires BigQuery to use Custom App to obtain your own ClientId and Client Secret (Some old Screenshots may use Default App for time being so please adjust your settings to use Custom App)</div></div>
<h3>Get Google API Project ID</h3>
<p>Once you have Google API Project created you can grab <a href="https://console.cloud.google.com/project?_ga=1.106484547.1991223081.1500069328">Project ID</a> (see screenshot below). You will need Project ID in the next step when building API URL.</p>
<div id="attachment_1567" style="width: 583px" class="wp-caption alignnone"><a href="//zappysys.com/blog/wp-content/uploads/2017/07/how-to-find-google-api-project-id.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-1567" class="size-full wp-image-1567" src="//zappysys.com/blog/wp-content/uploads/2017/07/how-to-find-google-api-project-id.png" alt="How to find Google API Project ID" width="573" height="379" srcset="https://zappysys.com/blog/wp-content/uploads/2017/07/how-to-find-google-api-project-id.png 573w, https://zappysys.com/blog/wp-content/uploads/2017/07/how-to-find-google-api-project-id-300x198.png 300w" sizes="(max-width: 573px) 100vw, 573px" /></a><p id="caption-attachment-1567" class="wp-caption-text">How to find Google API Project ID?</p></div>
<h3>Configure OAuth Connection for Google BigQuery API</h3>
<p>In order to call most of Google APIs you will need an OAuth App. If you want to use your own app then refer to <a href="//zappysys.com/blog/register-google-oauth-application-get-clientid-clientsecret/" target="_blank" rel="noopener">how to register Google OAuth Application (Get ClientID and ClientSecret)</a> article. For simplicity we will use <em>Default OAuth App</em>:</p>
<ol style="margin-left: 0;">
<li>Right click inside Connection Managers area and click &#8220;New Connection&#8230;&#8221;</li>
<li>From the connection type list select &#8220;ZS-OAUTH&#8221; connection type.
<div id="attachment_1569" style="width: 687px" class="wp-caption alignnone"><a href="//zappysys.com/blog/wp-content/uploads/2017/07/ssis-oauth-create-new-connection.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-1569" class="size-full wp-image-1569" src="//zappysys.com/blog/wp-content/uploads/2017/07/ssis-oauth-create-new-connection.png" alt="Create new SSIS OAuth API Connection Manager" width="677" height="220" srcset="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-oauth-create-new-connection.png 677w, https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-oauth-create-new-connection-300x97.png 300w" sizes="(max-width: 677px) 100vw, 677px" /></a><p id="caption-attachment-1569" class="wp-caption-text">Create new SSIS OAuth API Connection Manager</p></div></li>
<li>For OAuth Provider select &#8220;Google&#8221;.</li>
<li>For OAuth App type options leave &#8220;Use Default OAuth App&#8221; selected. If you <a href="//zappysys.com/blog/register-google-oauth-application-get-clientid-clientsecret/" target="_blank" rel="noopener">created custom OAuth App</a> then you would need to select &#8220;Use Custom OAuth App&#8221; option.</li>
<li>For Scopes enter or select the following URLs (URL is just a permission name). Each URL must be in a separate line. For demo purposes we use only the first 3 scopes but we included a few more in case you like to test API in depth with a different permission set:<br />
<pre class="crayon-plain-tag">https://www.googleapis.com/auth/bigquery
https://www.googleapis.com/auth/cloud-platform
https://www.googleapis.com/auth/cloud-platform.read-only
https://www.googleapis.com/auth/bigquery.insertdata
https://www.googleapis.com/auth/devstorage.full_control
https://www.googleapis.com/auth/devstorage.read_only
https://www.googleapis.com/auth/devstorage.read_write</pre>
</li>
<li>Click Generate Token. Login using correct account if needed and then you will be prompted to click &#8220;Approve&#8221; OAuth App.</li>
<li>Once you click OK on the login screen you will see new tokens populated on the connection screen.</li>
<li>Click Test to make sure connection / tokens are valid and then click OK to save the connection.<div class="su-note"  style="border-color:#e5de9d;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;"><div class="su-note-inner su-u-clearfix su-u-trim" style="background-color:#fff8b7;border-color:#ffffff;color:#333333;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;"><strong>NOTE:</strong> Below screenshot uses Default App but we recommend you to to use Custom OAuth App (Your own Clientid / secret &#8211; Obtained in previous section)</div></div>
<div id="attachment_1568" style="width: 685px" class="wp-caption alignnone"><a href="//zappysys.com/blog/wp-content/uploads/2017/07/ssis-google-bigquery-integration-oauth-api-connection.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-1568" class="size-full wp-image-1568" src="//zappysys.com/blog/wp-content/uploads/2017/07/ssis-google-bigquery-integration-oauth-api-connection.png" alt="Create SSIS OAuth API Connection for Google BigQuery API" width="675" height="654" srcset="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-google-bigquery-integration-oauth-api-connection.png 675w, https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-google-bigquery-integration-oauth-api-connection-300x291.png 300w" sizes="(max-width: 675px) 100vw, 675px" /></a><p id="caption-attachment-1568" class="wp-caption-text">Create SSIS OAuth API Connection for Google BigQuery API</p></div></li>
</ol>
<h3>Start BigQuery Job and get JobId (Submit Query)</h3>
<p>Once you have SSIS OAuth connection created for BigQuery API it&#8217;s time to read data from BigQuery. So, basically, there are two ways you can read BigQuery data: using <em>query </em>or <em>insert </em>method. For demo purposes we will use <a href="https://cloud.google.com/bigquery/docs/reference/rest/v2/jobs/query" target="_blank" rel="noopener"><em>jobs/query</em> method</a>. If you want fire complex queries which can run for many minutes then refer to <a href="https://cloud.google.com/bigquery/docs/reference/rest/v2/jobs/insert" target="_blank" rel="noopener"><em>jobs/insert</em> method</a>.</p>
<p>If you are expecting more than 10MB of data (~10K records) then you have to split data extract in two steps:</p>
<ol>
<li>Step-1 : Call <em>jobs/query</em> method using REST API Task to submit SQL query. This steps returns <strong>jobComplete: true</strong> if supplied query execution is done within timeoutMs parameter you included. By default its 10 seconds so if your query is going to take longer than 10 seconds then its good idea to add bigger timeout that way you dont need <strong>step#2</strong>. Once API call is done you will Get JobId in the response. Save that JobId in a variable for later use. This job result is valid for 24-hours only.</li>
<li>Step-2 <strong>(Optional)</strong> &#8211; You can add another optional <strong>REST API Task</strong> after previous step to Wait until Job is completed. For simplicity, this article will Omit setting up Status Check but its very simple&#8230;.Use below settings
<ol>
<li>Drag new REST API Task from toolbox. Connect it to Step-1 and double click to configure as below.</li>
<li>Select URL From Connection mode,</li>
<li>Select OAuth connection</li>
<li>Enter URL as <strong>https://www.googleapis.com/bigquery/v2/projects/{{User::ProjectId}}/jobs/{{User::JobId}}</strong> , Method: <strong>GET</strong></li>
<li>On Response Settings Tab, Select Response Content Type <strong>JSON</strong> and for content filter enter <strong>$.status.state</strong></li>
<li>On Status Check Tab, check Enable Status Check Loop and enter <strong>DONE</strong> in SuccessValue field</li>
<li>Doing this setup will make sure we do not query data until Job Status is DONE (System keeps checking every 5 seconds)</li>
</ol>
</li>
<li>Step-2 : Read Job result using JSON Source in a Data Flow Task.</li>
</ol>
<div class="su-note"  style="border-color:#e5dd9d;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;"><div class="su-note-inner su-u-clearfix su-u-trim" style="background-color:#FFF7B7;border-color:#ffffff;color:#333333;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;"><strong>NOTE</strong> : If you are expecting less than ~10K rows then you can skip this step and just go to the next section &#8211; <a href="#Read_BigQuery_SQL_result_Method1_or_Method2">Read BigQuery SQL result (Method#1 or Method#2)</a>.</div></div>
<p>Now lets see how to configure REST API Task to submit query and extract JobId (which will be used in next section).</p>
<ol style="margin-left: 0;">
<li>In the Control Flow designer drag and drop <a href="https://zappysys.com/products/ssis-powerpack/ssis-json-file-source/" target="_blank" rel="noopener">ZS REST API Task</a> from the SSIS toolbox.</li>
<li>Double click the task to configure it.</li>
<li>Change Request URL Access Mode to [Url from connection].</li>
<li>From the connection dropdown select OAuth connection created in the previous section.</li>
<li>Enter URL as below (replace YOUR-PROJECT-ID with a valid Project ID obtained in the previous section):<br />
<pre class="crayon-plain-tag">https://www.googleapis.com/bigquery/v2/projects/YOUR-PROJECT-ID/queries</pre>
</li>
<li>Select Method as POST.</li>
<li>Enter Body (Request Data) as below (change your query if needed; we used Public dataset for the demo): If you do not specify timeout then default is 10 seconds only. Also in this call we only care about JobID from response so we just added maxResults=10 because in 2nd step we will get all rows by doing pagination.<br />
<pre class="crayon-plain-tag">{
   "timeoutMs": 100000, 
   "maxResults": 10, 
   "query": "SELECT title id,language,wp_namespace,reversion_id ,comment ,num_characters FROM [bigquery-public-data:samples.wikipedia] LIMIT 100000"
}</pre>
To use a <a href="https://cloud.google.com/bigquery/docs/reference/standard-sql/" target="_blank" rel="noopener">Standard SQL</a> query instead of <a href="https://cloud.google.com/bigquery/docs/reference/legacy-sql" target="_blank" rel="noopener">Legacy SQL</a>, add <strong>useLegacySql</strong> property and set it to <strong>false</strong>:<br />
<pre class="crayon-plain-tag">{
   "timeoutMs": 100000, 
   "maxResults": 10, 
   "query": "SELECT title id,language,wp_namespace,reversion_id ,comment ,num_characters FROM [bigquery-public-data:samples.wikipedia] LIMIT 100000",
   "useLegacySql": false
}</pre>
For all possible parameters refer to <a href="https://cloud.google.com/bigquery/docs/reference/rest/v2/jobs/query" target="_blank" rel="noopener"><em>jobs/query</em> method documentation</a>.</p>
<div class="su-note"  style="border-color:#e5de9d;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;"><div class="su-note-inner su-u-clearfix su-u-trim" style="background-color:#FFF8B7;border-color:#ffffff;color:#333333;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;"><strong>NOTE:</strong> You can also supply location Parameter in the Body JSON to indicate where job should run. For non EU / US datacenters we suggest you to supply this parameter. See details at <a href="https://cloud.google.com/bigquery/docs/locations#specifying_your_location" target="_blank" rel="noopener">https://cloud.google.com/bigquery/docs/locations#specifying_your_location</a>.<br />
Example Use Of Location<br />
<pre class="crayon-plain-tag">{ &quot;location&quot;:&quot;us-east1&quot;,&nbsp; &quot;maxResults&quot;: 10, &quot;query&quot;: &quot;SELECT title FROM [bigquery-public-data:samples.wikipedia] LIMIT 10&quot; }</pre>
</div></div></li>
<li>Select Body Content Type as <strong>application/json</strong>.</li>
<li>Click Test Request/Response. If things go well you will see JSON content. Then just <strong>copy JobId from the response</strong> and save for later use:<br />
<a href="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-bigquery-rest-api-get-jobid.png"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2213" src="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-bigquery-rest-api-get-jobid.png" alt="" width="677" height="488" srcset="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-bigquery-rest-api-get-jobid.png 677w, https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-bigquery-rest-api-get-jobid-300x216.png 300w" sizes="(max-width: 677px) 100vw, 677px" /></a></li>
<li>Now go to Response Settings tab.</li>
<li>Select ContentType=Json.</li>
<li>Enter below expression to extract JobId from the response. You will need this Id to read SQL query output (this JobId is valid for 24 hrs):<br />
<pre class="crayon-plain-tag">$.jobReference.jobId</pre>
</li>
<li>Choose save response content to save to a variable. Select &lt;New Variable&#8230;&gt; option. When prompted give a name to your variable (i.e. vJobId) and for the value field paste JobId copied from the above step:<br />
<a href="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-rest-api-response-save-json-value-variable.png"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2214" src="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-rest-api-response-save-json-value-variable.png" alt="" width="625" height="531" srcset="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-rest-api-response-save-json-value-variable.png 625w, https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-rest-api-response-save-json-value-variable-300x255.png 300w" sizes="(max-width: 625px) 100vw, 625px" /></a><br />
<div class="su-note"  style="border-color:#e5dd9d;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;"><div class="su-note-inner su-u-clearfix su-u-trim" style="background-color:#FFF7B7;border-color:#ffffff;color:#333333;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;"><strong>NOTE</strong>: This JobId expires after 24-hrs so while you are designing a package and not running it then design time value is used for testing/previewing. So make sure your JobId is valid. If needed click Test Request/Response to grab a new JobId and update the variable with a new value so you can preview data without running a full package.</div></div></li>
<li>Click OK to save the UI.</li>
</ol>
<h3>Read BigQuery SQL result (for specified JobID)</h3>
<p>Now let&#8217;s look at how to read data from BigQuery</p>
<p>Configure Google BigQuery Web Request (URL, Method, ContentType, Body etc.)</p>
<ol>
<li>In the Control Flow designer drag and drop Data Flow Task from SSIS toolbox.<br />
<img decoding="async" class="figureimage" title="SSIS Data Flow Task - Drag and Drop" src="https://zappysys.com/onlinehelp/ssis-powerpack/scr/images/drag-and-drop-data-flow-task.png" alt="SSIS Data Flow Task - Drag and Drop" /></li>
<li>Double click Data Flow Task and drag and drop <a href="//zappysys.com/products/ssis-powerpack/ssis-json-file-source/" target="_blank" rel="noopener">ZS JSON Source (For API/File)</a> from SSIS toolbox.<br />
<img decoding="async" class="figureimage" title="SSIS JSON Source - Drag and Drop" src="https://zappysys.com/onlinehelp/ssis-powerpack/scr/images/json-source/ssis-json-source-adapter-drag.png" alt="SSIS JSON Source - Drag and Drop" /></li>
<li>Double click JSON Source to edit and configure as below</li>
<li>Enter URL as below. Replace <strong>YOUR-API-PROJECT-ID</strong> with the API Project ID obtained in the <a href="//zappysys.com/blog/wp-content/uploads/2017/07/how-to-find-google-api-project-id.png" target="_blank" rel="noopener">previous section</a>.<br />
<pre class="crayon-plain-tag">https://www.googleapis.com/bigquery/v2/projects/YOUR-API-PROJECT-ID/queries/{{User::vJobId}}?maxResults=10000</pre>
&#8211;OR&#8211; (Use below if your Job ran <strong>outside US / EU data center</strong>)<br />
<pre class="crayon-plain-tag">https://www.googleapis.com/bigquery/v2/projects/YOUR-API-PROJECT-ID/queries/{{User::vJobId}}?location=YOUR_REGION_ID&amp;maxResults=10000</pre>
<div class="su-note"  style="border-color:#e5de9d;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;"><div class="su-note-inner su-u-clearfix su-u-trim" style="background-color:#FFF8B7;border-color:#ffffff;color:#333333;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;"><strong>NOTE:</strong> location Parameter indicates the geographic location of the job. This is <span style="text-decoration: underline;"><strong>Required parameter except for US and EU</strong></span>. See details at <a href="https://cloud.google.com/bigquery/docs/locations#specifying_your_location">https://cloud.google.com/bigquery/docs/locations#specifying_your_location</a>. You can supply same location parameter for first step when you <a href="https://cloud.google.com/bigquery/docs/reference/rest/v2/jobs/query" target="_blank" rel="noopener">submit the query</a></p>
<p>Failure to supply location parameter for non US /EU users may result in <strong>404 NotFound Error</strong>.<br />
</div></div></li>
<li>Check <strong>Use Credentials</strong> option and select <strong>OAuth Connection Manager</strong> created in the previous section.</li>
<li>For HTTP Request Method select <strong>GET</strong>.<br />
<a href="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-read-data-from-google-bigquery-job-use-json-source.png"><img loading="lazy" decoding="async" class="size-full wp-image-2215" src="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-read-data-from-google-bigquery-job-use-json-source.png" alt="Read data from Google BigQuery from Temp Job result" width="1004" height="661" srcset="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-read-data-from-google-bigquery-job-use-json-source.png 1004w, https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-read-data-from-google-bigquery-job-use-json-source-300x198.png 300w, https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-read-data-from-google-bigquery-job-use-json-source-768x506.png 768w" sizes="(max-width: 1004px) 100vw, 1004px" /></a></li>
</ol>
<p>Read data from Google BigQuery from Temp Job result</p>
<h4>Configure Filter</h4>
<p>We need to transform a single JSON response into multiple rows so we need to apply a correct filter.</p>
<ol>
<li>On JSON Source go to Filter Options tab.</li>
<li>In the Filter field enter<strong> $.rows[*]</strong> or click [Select Filter] button to browse hierarchy you want to extract.</li>
</ol>
<div id="attachment_1573" style="width: 685px" class="wp-caption alignnone"><a href="//zappysys.com/blog/wp-content/uploads/2017/07/ssis-get-data-google-bigquery-select-json-filter.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-1573" class="wp-image-1573 size-full" src="//zappysys.com/blog/wp-content/uploads/2017/07/ssis-get-data-google-bigquery-select-json-filter.png" alt="Select Filter for JSON Response" width="675" height="363" srcset="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-get-data-google-bigquery-select-json-filter.png 675w, https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-get-data-google-bigquery-select-json-filter-300x161.png 300w" sizes="(max-width: 675px) 100vw, 675px" /></a><p id="caption-attachment-1573" class="wp-caption-text">Select Filter for JSON Response</p></div>
<h4>Configure BigQuery API Pagination Settings</h4>
<p>Most of modern APIs usually implement some sort of pagination technique so you get a part of data in each request rather than all in one go. Thus if you want more you can paginate through pages until the last page is reached. You can also read <a href="//zappysys.com/blog/ssis-rest-api-looping-until-no-more-pages-found/" target="_blank" rel="noopener">Understanding REST API Pagination in SSIS</a> article to learn more about pagination in SSIS.</p>
<p>BigQuery API returns <em>pageToken</em> attribute in response JSON if more data is found for requested query result. You can then pass <em>pageToken</em> in the next URL in this format: <strong>http://my-api-url/?pageToken=xxxxxxxxxx</strong></p>
<p>Now lets configure JSON Source to automate this pagination for us. On JSON Source go to Pagination Tab and enter the following two settings:</p>
<ol>
<li>Set Next Link as <strong>$.pageToken</strong>.</li>
<li>Set Suffix for Next URL as <strong>&amp;pageToken=&lt;%nextlink%&gt;</strong>.</li>
</ol>
<p>See the screenshot below to get more clarity:</p>
<div id="attachment_1572" style="width: 815px" class="wp-caption alignnone"><a href="//zappysys.com/blog/wp-content/uploads/2017/07/ssis-google-bigquery-api-pagination-settings.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-1572" class="size-full wp-image-1572" src="//zappysys.com/blog/wp-content/uploads/2017/07/ssis-google-bigquery-api-pagination-settings.png" alt="Configure BigQuery API Pagination on SSIS JSON Source" width="805" height="576" srcset="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-google-bigquery-api-pagination-settings.png 805w, https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-google-bigquery-api-pagination-settings-300x215.png 300w, https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-google-bigquery-api-pagination-settings-768x550.png 768w" sizes="(max-width: 805px) 100vw, 805px" /></a><p id="caption-attachment-1572" class="wp-caption-text">Configure BigQuery API Pagination on SSIS JSON Source</p></div>
<h4>Configure Array Transformation</h4>
<p>Now the last thing we have to configure is special 2-dimensional JSON array format used by BigQuery API:</p>
<ol>
<li>On the JSON Source UI go to 2D Array Transformation tab.</li>
<li>Enter the following settings:
<ol>
<li>For Transformation Type select <strong>Transform complex 2-dimensional array</strong>.</li>
<li>For Column Name filter enter <strong>$.schema.fields[*].name</strong>.</li>
<li>For Row Values Filter enter <strong>$.f[*].v</strong>.</li>
</ol>
</li>
</ol>
<div id="attachment_1575" style="width: 819px" class="wp-caption alignnone"><a href="//zappysys.com/blog/wp-content/uploads/2017/07/ssis-json-filter-extract-2d-array-get-data-from-google-bigquery.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-1575" class="size-full wp-image-1575" src="//zappysys.com/blog/wp-content/uploads/2017/07/ssis-json-filter-extract-2d-array-get-data-from-google-bigquery.png" alt="JSON Array Transformation Options" width="809" height="317" srcset="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-json-filter-extract-2d-array-get-data-from-google-bigquery.png 809w, https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-json-filter-extract-2d-array-get-data-from-google-bigquery-300x118.png 300w, https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-json-filter-extract-2d-array-get-data-from-google-bigquery-768x301.png 768w" sizes="(max-width: 809px) 100vw, 809px" /></a><p id="caption-attachment-1575" class="wp-caption-text">JSON Array Transformation Options</p></div>
<h4>Preview Data and Save UI</h4>
<p>That&#8217;s it click Preview to see some data. If you entered sample JobID for your User::vJobID variable then you will see some data. In the next section we will see how to load Google BigQuery data into SQL Server. You can click Columns Tab to review Metadata.</p>
<p>Click OK to save UI and generate Metadata.</p>
<p>&nbsp;</p>
<h3>Configure Target &#8211; Load Google BigQuery data into SQL Server</h3>
<p>Now you can connect your JSON Source to any target such as ZS Trash Destination or a real database destination such as OLEDB Destination.</p>
<p>If you wish to dump data from Google BigQuery to a SQL Server table then just perform the following steps:</p>
<ol>
<li>Drag and drop OLEDB Destination from SSIS Toolbox. Rename it to something like SQL Server Table.</li>
<li>Double click on OLEDB Destination.</li>
<li>Click New to create a new connection &gt; Configure connection &gt; Click OK.</li>
<li>Click on New to create a new table &gt; Rename default table name &gt; Click OK.</li>
<li>Click on Mappings tab and click OK to save UI with default mappings.</li>
</ol>
<div id="attachment_1580" style="width: 918px" class="wp-caption alignnone"><a href="//zappysys.com/blog/wp-content/uploads/2017/07/ssis-rest-api-load-data-google-bigquery-to-sqlserver-table-json-connector.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-1580" class="size-full wp-image-1580" src="//zappysys.com/blog/wp-content/uploads/2017/07/ssis-rest-api-load-data-google-bigquery-to-sqlserver-table-json-connector.png" alt="Configure SSIS OLEDB Destination - Google BigQuery to SQL Server Import" width="908" height="558" srcset="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-rest-api-load-data-google-bigquery-to-sqlserver-table-json-connector.png 908w, https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-rest-api-load-data-google-bigquery-to-sqlserver-table-json-connector-300x184.png 300w, https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-rest-api-load-data-google-bigquery-to-sqlserver-table-json-connector-768x472.png 768w" sizes="(max-width: 908px) 100vw, 908px" /></a><p id="caption-attachment-1580" class="wp-caption-text">Configure SSIS OLEDB Destination &#8211; Google BigQuery to SQL Server Import</p></div>
<h3>Execute Package &#8211; Loading BigQuery data into SQL Server</h3>
<div id="attachment_1578" style="width: 596px" class="wp-caption alignnone"><a href="//zappysys.com/blog/wp-content/uploads/2017/07/ssis-package-execute-rest-api-loading-data-from-bigquery-to-sqlserver.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-1578" class="size-full wp-image-1578" src="//zappysys.com/blog/wp-content/uploads/2017/07/ssis-package-execute-rest-api-loading-data-from-bigquery-to-sqlserver.png" alt="SSIS Package Execution - Loading Google BigQuery Data into SQL Server" width="586" height="296" srcset="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-package-execute-rest-api-loading-data-from-bigquery-to-sqlserver.png 586w, https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-package-execute-rest-api-loading-data-from-bigquery-to-sqlserver-300x152.png 300w" sizes="(max-width: 586px) 100vw, 586px" /></a><p id="caption-attachment-1578" class="wp-caption-text">SSIS Package Execution &#8211;<br />Loading Google BigQuery Data into SQL Server</p></div>
<h2>Create / Delete Google BigQuery Dataset using API call</h2>
<p>As we mentioned before, you need dataset before you can create a table. Most common way to create dataset is via User Interface but what if you like to automate from your SSIS Package or other workflow? Here is how you can create or delete. Basically you can use REST API Task to send CREATE or DROP command for Dataset object</p>
<h3><strong>Create Google Dataset</strong></h3>
<p>To create dataset configure REST API Task using below settings (We will <a href="https://cloud.google.com/bigquery/docs/reference/rest/v2/datasets/insert" target="_blank" rel="noopener">call this API</a>)</p>
<ol>
<li>Drag REST API Task from toolbox<br />
<img decoding="async" class="figureimage" title="SSIS REST Api Web Service Task - Drag and Drop" src="https://zappysys.com/onlinehelp/ssis-powerpack/scr/images/rest-api-task/ssis-rest-api-web-service-task-drag.png" alt="SSIS REST Api Task - Drag and Drop" /></li>
<li>Select URL from Connection mode and select connection as <strong>OAuth connection</strong> (Created in previous section)</li>
<li>Enter below URL (assuming you stored your ProjectID in a variable called ProjectId<br />
<pre class="crayon-plain-tag">https://bigquery.googleapis.com/bigquery/v2/projects/{{User::ProjectId}}/datasets</pre>
</li>
<li>Request Method as <strong>POST</strong></li>
<li>Enter Request Body as below (change YOUR_DATASET_NAME &#8211; e.g. TestDataset )<br />
<pre class="crayon-plain-tag">{"datasetReference": { "datasetId": "YOUR_DATASET_NAME", "projectId": "{{User::ProjectId}}"} }</pre>
</li>
<li>Select Request Content Type as <strong>application/json</strong> from the dropdown</li>
<li>(Optional) &#8211; If you want to implement Continue if Dataset already exists then you can go to Error Handling Tab (See next section for screenshot) and check <strong>Continue On Error Code</strong> option and set <strong>409 status code</strong></li>
<li>That&#8217;s it. Click Test Request/Response see it works.</li>
</ol>
<h3>Delete Google BigQuery Dataset</h3>
<p>For deleing dataset you have to choose same steps as above except two things</p>
<ol>
<li>Request Method as <strong>DELETE</strong></li>
<li>Request Body as blank</li>
</ol>
<h2>Create / Delete Google BigQuery Table using API call</h2>
<p>Now let&#8217;s look at how to create /drop Table in Google BigQuery using API calls.</p>
<h3>Create Google BigQuery Table</h3>
<p>To send <a href="https://cloud.google.com/bigquery/docs/reference/standard-sql/data-definition-language#:~:text=%20%20%201%20Open%20the%20BigQuery%20web,table%20appears%20in%20the%20resources%20pane.%20More%20" target="_blank" rel="noopener">CREATE TABLE  SQL statement (DDL)</a> we have to use same approach as we send normal SQL Query <a href="https://cloud.google.com/bigquery/docs/reference/rest/v2/jobs/query" target="_blank" rel="noopener">using this API call</a>. So notice we used Standard SQL for this call by supplying  <strong>useLegacySql: false</strong> . DDL Statement must be all in one line</p><pre class="crayon-plain-tag">POST https://www.googleapis.com/bigquery/v2/projects/{{User::ProjectId}}/queries

Content-Type: application/json

&gt;&gt;&gt;&gt; BODY &lt;&lt;&lt;&lt;&lt;

{
 "query": "CREATE TABLE TestDataset.Table1 (RecordID INT64,CustomerID STRING,CustomerName STRING);",
 "useLegacySql": false,
 "timeoutMs": 100000 
}</pre><p>
To create dataset configure REST API Task using below settings</p>
<ol>
<li>Drag REST API Task from toolbox<br />
<img decoding="async" class="figureimage" title="SSIS REST Api Web Service Task - Drag and Drop" src="https://zappysys.com/onlinehelp/ssis-powerpack/scr/images/rest-api-task/ssis-rest-api-web-service-task-drag.png" alt="SSIS REST Api Task - Drag and Drop" /></li>
<li>Select URL from Connection mode and select connection as <strong>OAuth connection</strong> (Created in previous section)</li>
<li>Enter below URL (assuming you stored your ProjectID in a variable called ProjectId<br />
<pre class="crayon-plain-tag">https://bigquery.googleapis.com/bigquery/v2/projects/{{User::ProjectId}}/queries</pre>
</li>
<li>Request Method as <strong>POST</strong></li>
<li>Enter Request Body as below<br />
<pre class="crayon-plain-tag">{
 "query": "CREATE TABLE TestDataset.Table1 (RecordID INT64,CustomerID STRING,CustomerName STRING);",
 "useLegacySql": false,
 "timeoutMs": 100000
}</pre>
</li>
<li>Select Request Content Type as <strong>application/json</strong> from the dropdown</li>
<li>(Optional) &#8211; If you want to implement Continue if Table exists then you can go to enable Error Handling Tab and check <strong>Continue On Error Code</strong> option and set <strong>409 status code</strong></li>
<li>That&#8217;s it. Click Test Request/Response see it works.</li>
</ol>
<div id="attachment_8986" style="width: 1008px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-create-bigquery-table-rest-api-call-skip-if-exists.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-8986" class="size-full wp-image-8986" src="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-create-bigquery-table-rest-api-call-skip-if-exists.png" alt="Create Google BigQuery Table - API Call (Continue On Error Setting - Skip CREATE if Table / Dataset Already Exists)" width="998" height="692" srcset="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-create-bigquery-table-rest-api-call-skip-if-exists.png 998w, https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-create-bigquery-table-rest-api-call-skip-if-exists-300x208.png 300w, https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-create-bigquery-table-rest-api-call-skip-if-exists-768x533.png 768w" sizes="(max-width: 998px) 100vw, 998px" /></a><p id="caption-attachment-8986" class="wp-caption-text">Create Google BigQuery Table &#8211; API Call (Continue On Error Setting &#8211; Skip CREATE if Table / Dataset Already Exists)</p></div>
<h3>Delete Google BigQuery Table</h3>
<p>For deleing table you have to choose same steps as above except two things</p>
<ol>
<li>Request Method as <strong>DELETE</strong></li>
<li>Request Body as blank</li>
</ol>
<h2>Write data to Google BigQuery using SSIS &#8211; 1 Million row insert test (FAST)</h2>
<p>Now let&#8217;s look at how easy it is to import data into Google BigQuery using SSIS. We will use the same OAuth connection we created before. To learn more about inserting data into BigQuery check <a href="https://cloud.google.com/bigquery/docs/reference/rest/v2/tabledata/insertAll"><i>tabledata/insertAll </i>method documentation</a>.</p>
<h3>Make sure billing is enabled</h3>
<p>Make sure that billing is enabled for your Google Cloud project. <a href="https://cloud.google.com/billing/docs/how-to/modify-project" target="_blank" rel="noopener">Learn how to confirm billing is enabled for your project</a>.</p>
<p>Streaming is not available via the <a href="https://cloud.google.com/bigquery/pricing#free-tier">free tier</a>. If you attempt to use streaming without enabling billing, you receive the following error: <code translate="no" dir="ltr">BigQuery: Streaming insert is not allowed in the free tier.</code></p>
<p>As long as your API calls fall under Free Tier  limit you wont be charged but you still need to enable billing if you wish to call Streaming insertAll API call (Write  demo).</p>
<h3>Configure OAuth Connection / Permissions</h3>
<p>If you want to perform data insert operation in BigQuery using API calls then include the following scopes in your OAuth Connection Manager and generate a token (see our first section of this article &#8211; We already included scopes for Write operation but incase you didnt do then regenerate token with below scopes):</p><pre class="crayon-plain-tag">https://www.googleapis.com/auth/bigquery
https://www.googleapis.com/auth/cloud-platform
https://www.googleapis.com/auth/bigquery.insertdata</pre><p>
<h3>Create BigQuery Dataset (From UI)</h3>
<p>For this demo first create a test dataset and one table under it like shown below (<em>billing must be enabled on your Google API Project</em>). To do that go to <a href="https://bigquery.cloud.google.com/welcome" target="_blank" rel="noopener">https://bigquery.cloud.google.com/welcome</a> and configure them:</p>
<div class="su-note"  style="border-color:#e5dd9d;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;"><div class="su-note-inner su-u-clearfix su-u-trim" style="background-color:#FFF7B7;border-color:#ffffff;color:#333333;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;"><strong>NOTE:</strong> BigQuery now provides a <a href="https://cloud.google.com/bigquery/docs/sandbox">sandbox</a> if you do not want to provide a credit card or enable billing for your project. The steps in this topic work for a project whether or not your project has billing enabled. If you optionally want to enable billing, see <a href="https://cloud.google.com/billing/docs/how-to/modify-project" target="_blank" rel="noopener">Learn how to enable billing</a>. There are some restriction on Sandbox mode (Write API calls will fail &#8211; Check Common Errors section later this article)</div></div>
<p><a href="https://zappysys.com/blog/wp-content/uploads/2017/07/google-bigquery-console-create-dataset-table-defination.png"><img loading="lazy" decoding="async" class="size-full wp-image-2354" src="https://zappysys.com/blog/wp-content/uploads/2017/07/google-bigquery-console-create-dataset-table-defination.png" alt="Create sample dataset and table for Google BigQuery Load" width="715" height="599" srcset="https://zappysys.com/blog/wp-content/uploads/2017/07/google-bigquery-console-create-dataset-table-defination.png 715w, https://zappysys.com/blog/wp-content/uploads/2017/07/google-bigquery-console-create-dataset-table-defination-300x251.png 300w" sizes="(max-width: 715px) 100vw, 715px" /></a></p>
<h3>Insert data into BigQuery using API call</h3>
<p>And here is a REST API example to insert data into a BigQuery Table:</p>
<p><strong>Request URL:</strong></p><pre class="crayon-plain-tag">https://www.googleapis.com/bigquery/v2/projects/MY_PROJECT_ID/datasets/MY_DATASET_ID/tables/MY_TABLE_ID/insertAll</pre><p>
<strong>Request Headers:</strong></p><pre class="crayon-plain-tag">Authorization: Bearer ya29.Gl0cBxxxxxxxxxxxxxxxxxxuEIhJIEnxE6GsQPHI
Content-Type: application/json</pre><p>
<strong>Request Body:</strong></p><pre class="crayon-plain-tag">{
  "kind": "bigquery#tableDataInsertAllRequest",
  "rows": [
     {"json": {"RowId": 1,"CustomerName": "AAA"} }, 
     {"json": {"RowId": 2,"CustomerName": "BBB"} }
   ]
}</pre><p>
<h3></h3>
<p>Here is our data flow setup to achive very high throughput for Google BigQuery Data Load. We will show you how to insert one million rows in Google BigQuery in less than a minute based on below setup. We will use Multi Threading option and New Compression Option (Added in v3.1.4)</p>
<ol>
<li>Dummy Data Source &#8211; Generate sample records</li>
<li>JSON Generator Transform &#8211; Generates JSON documents to send as POST request for above /insertAll API call.</li>
<li>Web API destination  &#8211; Call /insertAll API call to submit our data to BigQuery</li>
<li><strong>(Optional)</strong> JSON Parser Transform &#8211; Parse Error Message for any response</li>
<li><strong>(Optional)</strong> Trash Destination &#8211; Save any errors to text file for review</li>
</ol>
<div id="attachment_8973" style="width: 910px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2017/07/google-bigquery-fast-data-load-ssis-multi-threads-insert-compression-on.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-8973" class="size-full wp-image-8973" src="https://zappysys.com/blog/wp-content/uploads/2017/07/google-bigquery-fast-data-load-ssis-multi-threads-insert-compression-on.png" alt="Google BigQuery Data Load Demo in SSIS - 1 Million Rows Insert with Multi Threads and Compression ON (Fast Upload)" width="900" height="724" srcset="https://zappysys.com/blog/wp-content/uploads/2017/07/google-bigquery-fast-data-load-ssis-multi-threads-insert-compression-on.png 900w, https://zappysys.com/blog/wp-content/uploads/2017/07/google-bigquery-fast-data-load-ssis-multi-threads-insert-compression-on-300x241.png 300w, https://zappysys.com/blog/wp-content/uploads/2017/07/google-bigquery-fast-data-load-ssis-multi-threads-insert-compression-on-768x618.png 768w" sizes="(max-width: 900px) 100vw, 900px" /></a><p id="caption-attachment-8973" class="wp-caption-text">Google BigQuery Data Load Demo in SSIS &#8211; 1 Million Rows Insert with Multi Threads and Compression ON (Fast Upload)</p></div>
<p>&nbsp;</p>
<h3>Configure SSIS JSON Generator &#8211; Generate JSON for BigQuery Table Insert</h3>
<p>Now let&#8217;s see how to build an HTTP request with JSON body and send it to BigQuery:</p>
<ol style="margin-left: 0;">
<li>Drag Data Flow Task and double click on it.<br />
<img decoding="async" class="figureimage" title="SSIS Data Flow Task - Drag and Drop" src="https://zappysys.com/onlinehelp/ssis-powerpack/scr/images/drag-and-drop-data-flow-task.png" alt="SSIS Data Flow Task - Drag and Drop" /></li>
<li>Drag and configure your Source (for this demo we use Dummy Data Source with Customer Template). See previous section for configuration of Dummy Data Source.<br />
<img decoding="async" class="figureimage" title="SSIS DummyData Source - Drag and Drop" src="https://zappysys.com/onlinehelp/ssis-powerpack/scr/images/dummy-data-Source/ssis-dummy-data-source-adapter-drag.png" alt="SSIS DummyData Source - Drag and Drop" /></li>
<li>Drag and drop <a href="https://zappysys.com/products/ssis-powerpack/ssis-json-generator-transform/" target="_blank" rel="noopener">ZS JSON Generator Transform</a> to produce JSON from a database or file records. If your source is already sending a valid JSON then you can skip this step (e.g. SQL query is<br />
returning JSON). You can also read raw JSON from a very large file (new-line separated JSON) using <a href="https://zappysys.com/products/ssis-powerpack/ssis-json-file-source/" target="_blank" rel="noopener">JSON Source with Output as Raw Data</a> option checked.<img decoding="async" class="figureimage" title="SSIS JSON Generator - Drag and Drop" src="https://zappysys.com/onlinehelp/ssis-powerpack/scr/images/json-generator-transform/ssis-json-generator-transform-drag-2.png" alt="SSIS JSON Generator - Drag and Drop" /></li>
<li>Connect Source to JSON Generator. Double click JSON Generator Transform to start configuring it like below.</li>
<li>Select Output Mode as <strong>Single Dataset Array</strong> and enter Batch Size <strong>10000</strong> (This is Max limit allowed by Google BigQuery API <a href="https://cloud.google.com/bigquery/docs/reference/rest/v2/tabledata/insertAll" target="_blank" rel="noopener">insertAll</a>)</li>
<li>First <strong>right click</strong> on Mappings node and select <strong>Add Static Element</strong>
<div id="attachment_8975" style="width: 862px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-bigquery-insert-request-batch-json-generate.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-8975" class="size-full wp-image-8975" src="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-bigquery-insert-request-batch-json-generate.png" alt="Generate JSON for Google BigQuery InsertAll API request - Batch 10000 rows in a single API call" width="852" height="391" srcset="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-bigquery-insert-request-batch-json-generate.png 852w, https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-bigquery-insert-request-batch-json-generate-300x138.png 300w, https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-bigquery-insert-request-batch-json-generate-768x352.png 768w" sizes="(max-width: 852px) 100vw, 852px" /></a><p id="caption-attachment-8975" class="wp-caption-text">Generate JSON for Google BigQuery InsertAll API request &#8211; Batch 10000 rows in a single API call</p></div></li>
<li>Enter Name as <strong>kind</strong> and value as <strong><strong>bigquery#tableDataInsertAllRequest<br />
</strong></strong></p>
<div id="attachment_8976" style="width: 538px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-json-generator-add-static-value.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-8976" class="size-full wp-image-8976" src="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-json-generator-add-static-value.png" alt="JSON Generator - Add Static Element" width="528" height="373" srcset="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-json-generator-add-static-value.png 528w, https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-json-generator-add-static-value-300x212.png 300w" sizes="(max-width: 528px) 100vw, 528px" /></a><p id="caption-attachment-8976" class="wp-caption-text">JSON Generator &#8211; Add Static Element</p></div></li>
<li>Now right click on Mappings node and select <strong>Add Document Array</strong> option
<div id="attachment_8978" style="width: 464px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-json-generator-add-document-array-option.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-8978" class="wp-image-8978 size-full" src="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-json-generator-add-document-array-option.png" alt="JSON Generator - Add Document Array" width="454" height="349" srcset="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-json-generator-add-document-array-option.png 454w, https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-json-generator-add-document-array-option-300x231.png 300w" sizes="(max-width: 454px) 100vw, 454px" /></a><p id="caption-attachment-8978" class="wp-caption-text">JSON Generator &#8211; Add Document Array</p></div></li>
<li>Enter <strong>rows</strong> as array title and click OK
<div id="attachment_8979" style="width: 470px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-json-generator-add-document-array.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-8979" class="size-full wp-image-8979" src="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-json-generator-add-document-array.png" alt="JSON Generator - Name array" width="460" height="313" srcset="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-json-generator-add-document-array.png 460w, https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-json-generator-add-document-array-300x204.png 300w" sizes="(max-width: 460px) 100vw, 460px" /></a><p id="caption-attachment-8979" class="wp-caption-text">JSON Generator &#8211; Name array</p></div></li>
<li>Select newly added array node and right click &gt; Add <strong>unbound nested element</strong>  enter Output alias as <strong>json </strong>and click OK.
<div id="attachment_8980" style="width: 475px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-json-generator-add-unbound-element.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-8980" class="size-full wp-image-8980" src="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-json-generator-add-unbound-element.png" alt="JSON Generator - Add unbound nested element" width="465" height="471" srcset="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-json-generator-add-unbound-element.png 465w, https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-json-generator-add-unbound-element-296x300.png 296w" sizes="(max-width: 465px) 100vw, 465px" /></a><p id="caption-attachment-8980" class="wp-caption-text">JSON Generator &#8211; Add unbound nested element</p></div></li>
<li>Select <strong>json</strong> node and right click &gt; Select <strong>Add Elements below</strong> this node and select multiple columns you like to send to BigQuery. Click OK to save.
<div id="attachment_8981" style="width: 467px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-json-generator-add-multiple-elements.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-8981" class="size-full wp-image-8981" src="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-json-generator-add-multiple-elements.png" alt="JSON Generator - Add Multiple Elements" width="457" height="529" srcset="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-json-generator-add-multiple-elements.png 457w, https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-json-generator-add-multiple-elements-259x300.png 259w" sizes="(max-width: 457px) 100vw, 457px" /></a><p id="caption-attachment-8981" class="wp-caption-text">JSON Generator &#8211; Add Multiple Elements</p></div></li>
<li>Now let&#8217;s preview our JSON (Copy preview JSON to try in the next step &#8211; Web API destination)<div class="su-note"  style="border-color:#e5da9d;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;"><div class="su-note-inner su-u-clearfix su-u-trim" style="background-color:#fff4b7;border-color:#ffffff;color:#333333;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;">NOTE: Table name and column names are case-sensitive so make sure your JSON attribute matches exact same way. </div></div>Here is the finished JSON Structure for next Step
<div id="attachment_8982" style="width: 857px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2017/07/create-google-bigquery-request-json-insertall-api.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-8982" class="size-full wp-image-8982" src="https://zappysys.com/blog/wp-content/uploads/2017/07/create-google-bigquery-request-json-insertall-api.png" alt="Sample JSON Request body for Google BigQuery insertAll API request" width="847" height="671" srcset="https://zappysys.com/blog/wp-content/uploads/2017/07/create-google-bigquery-request-json-insertall-api.png 847w, https://zappysys.com/blog/wp-content/uploads/2017/07/create-google-bigquery-request-json-insertall-api-300x238.png 300w, https://zappysys.com/blog/wp-content/uploads/2017/07/create-google-bigquery-request-json-insertall-api-768x608.png 768w" sizes="(max-width: 847px) 100vw, 847px" /></a><p id="caption-attachment-8982" class="wp-caption-text">Sample JSON Request body for Google BigQuery insertAll API request</p></div></li>
<li>Click OK to save UI.</li>
</ol>
<h3>Configure SSIS Web API destination &#8211; Insert data into BigQuery Table</h3>
<p>Once you have Input JSON prepared,  now let&#8217;s configure destination for BigQuery.</p>
<ol style="margin-left: 0;">
<li>Drag and drop <a href="https://zappysys.com/products/ssis-powerpack/ssis-web-api-destination-connector/" target="_blank" rel="noopener">ZS Web API Destination</a>.</li>
<li>Connect your JSON Generator Transform to Web API destination.</li>
<li>Configure general properties:
<div id="attachment_2349" style="width: 869px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-bigquery-data-load-using-web-api-destination.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-2349" class="size-full wp-image-2349" src="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-bigquery-data-load-using-web-api-destination.png" alt="SSIS Web API Destination - Configure for BigQuery Data load" width="859" height="583" srcset="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-bigquery-data-load-using-web-api-destination.png 859w, https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-bigquery-data-load-using-web-api-destination-300x204.png 300w, https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-bigquery-data-load-using-web-api-destination-768x521.png 768w" sizes="(max-width: 859px) 100vw, 859px" /></a><p id="caption-attachment-2349" class="wp-caption-text">SSIS Web API Destination &#8211;<br />Configure for BigQuery Data load</p></div></li>
<li>Make sure to enter URL in this format:<br />
<pre class="crayon-plain-tag">https://www.googleapis.com/bigquery/v2/projects/MY_PROJECT_ID/datasets/MY_DATASET_ID/tables/MY_TABLE_ID/insertAll</pre>
Make sure to replace 3 parts in above URL (MY_PROJECT_ID, MY_DATASET_ID, MY_TABLE_ID) with actual values from your Google Project and BigQuery dataset/table configuration.</li>
<li>Now you can enable Compression and Multiple Threads for higher throughput as below.<br />
<strong>NOTE:</strong> Compression Property was added in v3.1.4 so you may not see it if you have older version.</p>
<div id="attachment_8983" style="width: 1042px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-rest-api-post-data-request-performance-optimization-gzip-compression-multi-threads.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-8983" class="size-full wp-image-8983" src="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-rest-api-post-data-request-performance-optimization-gzip-compression-multi-threads.png" alt="Google BigQuery Data Loading Performance Optimization Options - Enable Multiple Threads and Compression Options" width="1032" height="347" srcset="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-rest-api-post-data-request-performance-optimization-gzip-compression-multi-threads.png 1032w, https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-rest-api-post-data-request-performance-optimization-gzip-compression-multi-threads-300x101.png 300w, https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-rest-api-post-data-request-performance-optimization-gzip-compression-multi-threads-768x258.png 768w, https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-rest-api-post-data-request-performance-optimization-gzip-compression-multi-threads-1024x344.png 1024w" sizes="(max-width: 1032px) 100vw, 1032px" /></a><p id="caption-attachment-8983" class="wp-caption-text">Google BigQuery Data Loading Performance Optimization Options &#8211; Enable Multiple Threads and Compression Options</p></div></li>
<li>If you want to try test insert request from UI without running full package then go back to first tab and edit Body (Use Sample JSON generated by previous JSON Transform &#8211; You can grab from JSON Preview Panel on Generator Transform).Click Test Request / Response and confirm Success as below. You can go back to your BigQuery Portal and check one row is inserted after our test click. If everything looking good then run full package to insert all records.Sample JSON for Body:<br />
<pre class="crayon-plain-tag">{
  "kind": "bigquery#tableDataInsertAllRequest",
  "rows": [
     {"json": {"RowId": 1,"CustomerName": "AAA"} }, 
     {"json": {"RowId": 2,"CustomerName": "BBB"} }
   ]
}</pre>
<div id="attachment_4919" style="width: 910px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-google-bigquery-test-insert-dataset-record-api.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4919" class="size-full wp-image-4919" src="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-google-bigquery-test-insert-dataset-record-api.png" alt="Test Google BigQuery Table Insert - SSIS Web API Destination UI" width="900" height="730" srcset="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-google-bigquery-test-insert-dataset-record-api.png 900w, https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-google-bigquery-test-insert-dataset-record-api-300x243.png 300w, https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-google-bigquery-test-insert-dataset-record-api-768x623.png 768w" sizes="(max-width: 900px) 100vw, 900px" /></a><p id="caption-attachment-4919" class="wp-caption-text">Test Google BigQuery Table Insert &#8211; SSIS Web API Destination UI</p></div></li>
<li>Hit OK to save UI.</li>
<li>Run the package and verify data in Google BigQuery Console:
<div id="attachment_2351" style="width: 1206px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-bigquery-data-import-example.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-2351" class="size-full wp-image-2351" src="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-bigquery-data-import-example.png" alt="Loading data into Google BigQuery using SSIS" width="1196" height="625" srcset="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-bigquery-data-import-example.png 1196w, https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-bigquery-data-import-example-300x157.png 300w, https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-bigquery-data-import-example-768x401.png 768w, https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-bigquery-data-import-example-1024x535.png 1024w" sizes="(max-width: 1196px) 100vw, 1196px" /></a><p id="caption-attachment-2351" class="wp-caption-text">Loading data into Google BigQuery using SSIS</p></div></li>
</ol>
<h2></h2>
<h2>Error Handling for BigQuery Data Load (Bulk Insert API Calls)</h2>
<p>There will be a time when some records you insert may not go well in Google BigQuery. In such case you can read output from Web API destination and parse further with JSON Parser Transform. Check for certain values in the output. You must use JSON Parser after Web API destination (Connect <strong>Blue Arrow</strong> from Web API destination &#8211; Since its Soft Error it won&#8217;t redirect in Red Arrow ).</p>
<p>For example here is the sample JSON in POST Body for testing which produces error due to bad column name. When bad row found in batch all records will be rejected. Notice that error returns index of record in batch so you can identify which row went bad. It also returns column name in location attribute.</p>
<p><strong>NOTE: Bad column name in 2nd record</strong></p>
<p><strong>Test Body (Bad):</strong></p><pre class="crayon-plain-tag">{
  "kind": "bigquery#tableDataInsertAllRequest",
  "rows": [
     {"json": {"RecordID": 1,"CustomerID": "X1"} }, 
     {"json": {"Bad_Column": 2,"CustomerID": "X2"} }
     {"json": {"RecordID": 3,"CustomerID": "X3"} }, 
   ]
}</pre><p>
&nbsp;</p>
<p><strong>Response (For Bad Input):</strong></p><pre class="crayon-plain-tag">{
  "kind": "bigquery#tableDataInsertAllResponse",
  "insertErrors": [
    {
      "index": 1,
      "errors": [
        {
          "reason": "invalid",
          "location": "bad_column",
          "debugInfo": "",
          "message": "no such field."
        }
      ]
    },
    {
      "index": 0,
      "errors": [
        {
          "reason": "stopped",
          "location": "",
          "debugInfo": "",
          "message": ""
        }
      ]
    },
    {
      "index": 2,
      "errors": [
        {
          "reason": "stopped",
          "location": "",
          "debugInfo": "",
          "message": ""
        }
      ]
    }
  ]
}</pre><p>
&nbsp;</p>
<p>To configure error detection perform following steps.</p>
<ol>
<li>Drag and drop <a href="https://zappysys.com/products/ssis-powerpack/ssis-json-parser-transform/" target="_blank" rel="noopener">ZS JSON Parser Transform</a> after Web API destination</li>
<li>Click on Web API destination. Connect Blue arrow  to JSON Parser Transform</li>
<li>Configure JSON Parser Transform like below</li>
<li>Connect JSON Parser TRansform to some Destination to save error information (e.g. SQL Table or Trans destination)</li>
</ol>
<div id="attachment_4920" style="width: 1111px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-handle-bigquery-insert-errors-json-parser.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4920" class="size-full wp-image-4920" src="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-handle-bigquery-insert-errors-json-parser.png" alt="Handling BigQuery Insert Errors in SSIS " width="1101" height="739" srcset="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-handle-bigquery-insert-errors-json-parser.png 1101w, https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-handle-bigquery-insert-errors-json-parser-300x201.png 300w, https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-handle-bigquery-insert-errors-json-parser-768x515.png 768w, https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-handle-bigquery-insert-errors-json-parser-1024x687.png 1024w, https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-handle-bigquery-insert-errors-json-parser-272x182.png 272w" sizes="(max-width: 1101px) 100vw, 1101px" /></a><p id="caption-attachment-4920" class="wp-caption-text">Handling BigQuery Insert Errors in SSIS</p></div>
<h2>Other Common Errors in BigQuery API calls</h2>
<p>In this section we will talk about many common API errors in BigQuery.</p>
<h3>Error: The project XXXXXXX has not enabled BigQuery</h3>
<p>Sometimes you might get below error. To fix this error make sure you go to your Project and <a href="https://console.cloud.google.com/apis/library/bigquery.googleapis.com" target="_blank" rel="noopener">Enable BigQuery API</a></p><pre class="crayon-plain-tag">Status Code: BadRequest

Response Body: {
  "error": {
    "code": 400,
    "message": "The project bigquerytest-281915 has not enabled BigQuery.",
    "errors": [
      {
        "message": "The project bigquerytest-281915 has not enabled BigQuery.",
        "domain": "global",
        "reason": "invalid"
      }
    ],
    "status": "INVALID_ARGUMENT"
  }
}</pre><p>
<h3>Error: 404 &#8211; Not Found: Table / Job xxxxxx</h3>
<ul>
<li>Make sure you are setting GET request and not POST.</li>
<li>Also make sure your jobId is valid because it expires after 24 hours.</li>
<li>Make sure project-id supplied in URL is valid ID  (DO NOT Specify Alias, use internal ID for project)</li>
<li>
<div>Make sure you supplied location parameter if your outside EU / US region. Reading data using <a href="https://cloud.google.com/bigquery/docs/reference/rest/v2/jobs/getQueryResults" target="_blank" rel="noopener">this API call</a> might fail if you failed to supply <strong>location</strong> in URL</div>
</li>
</ul>
</p><pre class="crayon-plain-tag">{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "notFound",
    "message": "Not Found: Table xxxxxx"
   }
  ],
  "code": 404,
  "message": "Not Found: Table xxxxxxx
 }
}</pre><p>
&nbsp;</p>
<h3>Error: 403 &#8211; Access Denied: BigQuery BigQuery: Streaming insert is not allowed in the free tier</h3>
<p>If you trying call certain APIs on sandbox mode or free tier then you might get below error. To overcome this error <a href="https://cloud.google.com/billing/docs/how-to/modify-project#enable_billing_for_a_project" target="_blank" rel="noopener">enable billing on google bigquery</a>. As long as your API calls fall under Free Tier  limit you wont be charged but you still need to enable billing if you wish to call Streaming insertAll API call.</p><pre class="crayon-plain-tag">Response Url: https://www.googleapis.com/bigquery/v2/projects/bigquerytest-281915/datasets/TestDataset/tables/Table1/insertAll

Status Code: Forbidden

Response Body: {
  "error": {
    "code": 403,
    "message": "Access Denied: BigQuery BigQuery: Streaming insert is not allowed in the free tier",
    "errors": [
      {
        "message": "Access Denied: BigQuery BigQuery: Streaming insert is not allowed in the free tier",
        "domain": "global",
        "reason": "accessDenied"
      }
    ],
    "status": "PERMISSION_DENIED"
  }
}</pre><p>
&nbsp;</p>
<p>&nbsp;</p>
<h2>Debugging Web API Requests</h2>
<p>If you need to debug actual requests made to Google server then you can use a tool like <a href="https://zappysys.com/blog/how-to-use-fiddler-to-analyze-http-web-requests/" target="_blank" rel="noopener">Fiddler</a>. It&#8217;s a very handy tool to troubleshoot JSON format issues. It will allow to see how a request is made to a server.</p>
<div id="attachment_2352" style="width: 1076px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-bigquery-data-import-debug-api-request-using-fiddler.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-2352" class="size-full wp-image-2352" src="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-bigquery-data-import-debug-api-request-using-fiddler.png" alt="Using Fiddler to debug Google BigQuery API requests in SSIS" width="1066" height="719" srcset="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-bigquery-data-import-debug-api-request-using-fiddler.png 1066w, https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-bigquery-data-import-debug-api-request-using-fiddler-300x202.png 300w, https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-bigquery-data-import-debug-api-request-using-fiddler-768x518.png 768w, https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-bigquery-data-import-debug-api-request-using-fiddler-1024x691.png 1024w, https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-bigquery-data-import-debug-api-request-using-fiddler-272x182.png 272w" sizes="(max-width: 1066px) 100vw, 1066px" /></a><p id="caption-attachment-2352" class="wp-caption-text">Using Fiddler to debug Google BigQuery API requests in SSIS</p></div>
<h2>Common Errors</h2>
<div class="content_block" id="custom_post_widget-1887"><h3>Truncation related error</h3>
<p style="text-align: justify;">The most common error you may face when you run an SSIS package is truncation error. During the design time only 300 rows are scanned from a source (a file or a REST API call response) to detect datatypes but at runtime, it is likely you will retrieve far more records. So it is possible that you will get longer strings than initially expected. For detailed instructions on how to fix common metadata related errors read an article "<a href="//zappysys.com/blog/handling-ssis-component-metadata-issues/" target="_blank" rel="noopener">How to handle SSIS errors (truncation, metadata issues)</a>".</p>

<h3>Authentication related error</h3>
Another frequent error you may get is an authentication error, which happens when you deploy/copy a package to another machine and run it there. Check <a href="#Deployment_to_Production">the paragraph below</a> to see why it happens and how to solve this problem.</div>
<h2>Deployment to Production</h2>
<div class="content_block" id="custom_post_widget-1932"><p style="text-align: justify;">In SSIS package <a href="https://docs.microsoft.com/en-us/sql/integration-services/security/access-control-for-sensitive-data-in-packages" target="_blank" rel="noopener">sensitive data such as tokens and passwords are by default encrypted by SSIS</a> with your Windows account which you use to create a package. So SSIS will fail to decrypt tokens/passwords when you run it from another machine using another Windows account. To circumvent this when you are creating an SSIS package which uses authentication components (e.g. an <a href="https://zappysys.com/onlinehelp/ssis-powerpack/scr/ssis-oauth-connection-manager.htm" target="_blank" rel="noopener">OAuth Connection Manager</a> or an <a href="https://zappysys.com/onlinehelp/ssis-powerpack/scr/ssis-http-connection-manager.htm" target="_blank" rel="noopener">HTTP Connection Manager</a> with credentials, etc.), consider using parameters/variables to pass tokens/passwords. In this way, you won’t face authentication related errors when a package is deployed to a production server.</p>
<p style="text-align: justify;">Check our article on <a href="https://zappysys.com/blog/how-to-run-an-ssis-package-with-sensitive-data-on-sql-server/" target="_blank" rel="noopener">how to configure packages with sensitive data on your production or development server</a>.</p></div>
<h2>Download Sample Package</h2>
<p><a href="https://zappysys.com/blog/wp-content/uploads/2017/07/Google_BigQuery_API_Read_Write_Create_Delete_Sample_SSIS2019_2017_2012.zip">Click Here to Download SSIS Sample Package &#8211; Google BigQuery API Read Write Create Delete (SSIS 2019, 2017, 2012)</a></p>
<p>&nbsp;</p>
<h2>Conclusion. What&#8217;s next?</h2>
<p>In this article we have learned how to load data from Google BigQuery into SQL Server using SSIS (drag and drop approach without coding). We used <a href="https://zappysys.com/products/ssis-powerpack/" target="_blank" rel="noopener">SSIS JSON / REST API Connector</a> to extract data from Google BigQuery REST API using OAuth. JSON Source Connector makes it super simple to parse complex/large JSON files or any Web API response into rows and columns so you can load data into a database, e.g. SQL Server database. <a href="//zappysys.com/products/ssis-powerpack/">Download SSIS PowerPack</a> to try many other automation scenarios that were not discussed in this article.</p>
<p><strong>Keywords:</strong></p>
<p>Google BigQuery Integration with SQL Server | How to extract data from google bigquery in SSIS? | How to read data from Google BigQuery API? | Loading BigQuery Data into SQL Server. | BigQuery to SQL Server | SSIS Google Big Query Integration | SSIS Google BigQuery Import  JSON File | SSIS Google BigQuery Export data</p>
<p>&nbsp;</p>
<p>The post <a href="https://zappysys.com/blog/get-data-google-bigquery-using-ssis/">How to read / write data in Google BigQuery using SSIS</a> appeared first on <a href="https://zappysys.com/blog">ZappySys Blog</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Convert CURL to SSIS PowerPack / ODBC for API Call</title>
		<link>https://zappysys.com/blog/using-ssis-curl-syntax-to-ssis-api-task/</link>
		
		<dc:creator><![CDATA[ZappySys]]></dc:creator>
		<pubDate>Thu, 10 Nov 2016 19:35:43 +0000</pubDate>
				<category><![CDATA[SSIS Tips & How-Tos]]></category>
		<category><![CDATA[curl]]></category>
		<category><![CDATA[fiddler]]></category>
		<category><![CDATA[postman]]></category>
		<category><![CDATA[ssis]]></category>
		<category><![CDATA[ssis json source]]></category>
		<category><![CDATA[SSIS PowerPack]]></category>
		<category><![CDATA[ssis rest api task]]></category>
		<category><![CDATA[ssis xml source]]></category>
		<guid isPermaLink="false">http://zappysys.com/blog/?p=884</guid>

					<description><![CDATA[<p>Introduction Often, REST API documentation uses example syntax for the curl command-line tool because it&#8217;s one of the most popular tools for making API calls. However, suppose you are an SSIS developer using ZappySys API Drivers/Connectors from either the SSIS PowerPack or the ODBC PowerPack. In that case, this blog post will help you translate the curl command [&#8230;]</p>
<p>The post <a href="https://zappysys.com/blog/using-ssis-curl-syntax-to-ssis-api-task/">Convert CURL to SSIS PowerPack / ODBC for API Call</a> appeared first on <a href="https://zappysys.com/blog">ZappySys Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Introduction</h2>
<p><a href="https://zappysys.com/blog/wp-content/uploads/2016/06/ssis-tip.png"><img loading="lazy" decoding="async" class="alignleft wp-image-1897" src="https://zappysys.com/blog/wp-content/uploads/2016/06/ssis-tip.png" alt="" width="90" height="90" srcset="https://zappysys.com/blog/wp-content/uploads/2016/06/ssis-tip.png 180w, https://zappysys.com/blog/wp-content/uploads/2016/06/ssis-tip-150x150.png 150w" sizes="(max-width: 90px) 100vw, 90px" /></a><span style="box-sizing: border-box; margin: 0px; padding: 0px;">Often, REST API documentation uses example syntax for <a href="https://curl.haxx.se/" target="_blank" rel="noopener"><strong>the curl</strong></a><a href="https://curl.haxx.se/" target="_blank" rel="noopener"> command-line tool</a> because it&#8217;s one of the most popular tools for making API calls.</span> <span style="box-sizing: border-box; margin: 0px; padding: 0px;"><span style="box-sizing: border-box; margin: 0px; padding: 0px;"><span style="box-sizing: border-box; margin: 0px; padding: 0px;">However, suppose you are an SSIS developer using <strong>ZappySys API Drivers</strong>/Connectors from either the SSIS PowerPack or the ODBC PowerPack.</span> In that case,</span> this blog post will help you translate the <strong>curl command line</strong> syntax to similar options available in the ZappySys Product.</span> For SSIS PowerPack products, you can refer to Connectors/Tasks such as <a href="//zappysys.com/products/ssis-powerpack/ssis-rest-api-web-service-task/" target="_blank" rel="noopener">ZappySys REST API Task</a> / <a href="//zappysys.com/products/ssis-powerpack/ssis-json-file-source/" target="_blank" rel="noopener">JSON Source Connector</a> / <a href="//zappysys.com/products/ssis-powerpack/ssis-xml-source/" target="_blank" rel="noopener">XML Source</a>. To make this article short and simple, we will show many screenshots from SSIS PowerPack UI, but the concepts are the same when you use other products, such as ODBC PowerPack <a href="https://zappysys.com/products/odbc-powerpack/odbc-json-rest-api-driver/" target="_blank" rel="noopener">JSON Driver / REST</a>  or <a href="https://zappysys.com/products/odbc-powerpack/odbc-xml-soap-api-driver/" target="_blank" rel="noopener">XML Driver</a>.</p>
<p>&nbsp;</p>
<p>If you are using <a href="https://www.getpostman.com/downloads/" target="_blank" rel="noopener"><strong>Postman</strong></a> to call the API, then <a href="https://zappysys.com/blog/postman-to-ssis-odbc-powerpack/" target="_blank" rel="noopener">refer to this article</a></p>
<p>If you are using <a href="https://www.telerik.com/fiddler" target="_blank" rel="noopener"><strong>Fiddler</strong></a> to call an API, then <a href="https://zappysys.com/blog/how-to-use-fiddler-to-analyze-http-web-requests/" target="_blank" rel="noopener">refer to this article</a></p>
<h2></h2>
<h2>CheatSheet &#8211; Curl to SSIS PowerPack / ODBC PowerPack</h2>
<p>Before we dig down more. Let&#8217;s look at how each command-line <a href="https://curl.haxx.se/docs/manpage.html" target="_blank" rel="noopener">parameter from CURL</a> maps to SSIS PowerPack settings.</p>
<div class="su-table su-table-alternate">
<table>
<colgroup>
<col width="320" />
<col />
<col /> </colgroup>
<tbody>
<tr>
<th>CURL Parameter (Short / Long)</th>
<th>Purpose</th>
<th>SSIS PowerPack Setting</th>
</tr>
<tr>
<td><em>method</em></td>
<td>Pass HTTP method (e.g., GET, POST, PUT, DELETE)</td>
<td>Select <strong>Method</strong> from Request Method Dropdown on  <a href="//zappysys.com/products/ssis-powerpack/ssis-rest-api-web-service-task/" target="_blank" rel="noopener">ZappySys REST API Task</a> or <a href="//zappysys.com/products/ssis-powerpack/ssis-json-file-source/" target="_blank" rel="noopener">JSON Source Connector</a>, or <a href="//zappysys.com/products/ssis-powerpack/ssis-xml-source/" target="_blank" rel="noopener">XML Source</a>, <a href="https://i0.wp.com/zappysys.com/blog/wp-content/uploads/2015/11/ssis-http-post-data-to-api-url-restful-json-web-request.png?w=774&amp;ssl=1" target="_blank" rel="noopener">like this</a></td>
</tr>
<tr>
<td><strong>-u</strong> <em>userid:password, </em><a href="https://curl.haxx.se/docs/manpage.html#-u" target="_blank" rel="noopener"><strong>&#8211;user</strong></a> <em>userid:password </em></td>
<td>Authenticate using Basic Authentication using UserID and Password</td>
<td><span style="margin: 0px;padding: 0px">Use the HTTP Connection Manager to enable Basic Auth,<a href="https://zappysys.com/blog/how-to-set-base64-encoded-authorization-header-for-http-web-request/" target="_blank" rel="noopener"> the</a>n supply the username and password.</span></td>
</tr>
<tr>
<td><strong>-H</strong> <em>&#8220;name: value&#8221;, </em><a href="https://curl.haxx.se/docs/manpage.html#-H" target="_blank" rel="noopener"><strong>&#8211;header</strong></a> <em>&#8220;name: value&#8221; </em></td>
<td>Supply HTTP Header(s)</td>
<td>Click on the Raw Edit option or enter key-value pairs of HTTP headers in the Headers grid  <a href="https://i0.wp.com/zappysys.com/blog/wp-content/uploads/2015/11/ssis-http-post-data-to-api-url-restful-json-web-request.png?w=774&amp;ssl=1" target="_blank" rel="noopener">like this</a></td>
</tr>
<tr>
<td><strong>-d</strong> <em>&#8220;key=value&#8221;,  </em><a href="https://curl.haxx.se/docs/manpage.html#-d" target="_blank" rel="noopener"><strong>&#8211;data</strong></a> <em>&#8220;key=value&#8221;<br />
</em></td>
<td>Supply BODY parameters using www-form-urlencoded Content Type</td>
<td>Click Edit next to the Request Data text box and supply Body. If you need to pass content in JSON / XML, then select the Request ContentType dropdown <a href="https://i0.wp.com/zappysys.com/blog/wp-content/uploads/2015/11/ssis-http-post-data-to-api-url-restful-json-web-request.png?w=774&amp;ssl=1" target="_blank" rel="noopener">like this</a></td>
</tr>
<tr>
<td><strong>-d</strong> <em>&#8220;some data&#8221;,</em> <em> </em><a href="https://curl.haxx.se/docs/manpage.html#-d" target="_blank" rel="noopener"><strong>&#8211;data</strong></a> <em>&#8220;some data&#8221;<br />
</em><strong>-d</strong> <em>@filepath,</em> <em> </em><a href="https://curl.haxx.se/docs/manpage.html#-d" target="_blank" rel="noopener"><strong>&#8211;data</strong></a> <em>@filepath<br />
</em></td>
<td>Supply BODY parameters using Content-Type other than www-form-urlencoded. You can also supply content from a file.</td>
<td>Click Edit next to the Request Data text box and supply Body. If you need to pass content in JSON / XML, select the Request ContentType dropdown as shown. To upload content stored from a local file, <a href="https://zappysys.com/blog/rest-api-file-upload-using-ssis-multi-part-post/" target="_blank" rel="noopener">use this option</a>.</td>
</tr>
<tr>
<td><strong>-F</strong> <em>key=value</em>, <a href="https://curl.haxx.se/docs/manpage.html#-f" target="_blank" rel="noopener"><strong>&#8211;form</strong></a> key=value</td>
<td>Supply Content-Type multipart/form-data according to <a href="http://www.ietf.org/rfc/rfc2388.txt">RFC 2388</a></td>
<td>Enable the Multipart option for Request on the ZappySys UI, <a href="https://zappysys.com/blog/rest-api-file-upload-using-ssis-multi-part-post/#Method2_8211_Upload_files_using_Multi-Part_Form_Data_mode_Mixed_content_multiple_files" target="_blank" rel="noopener">like this</a></td>
</tr>
<tr>
<td><strong>-k</strong>, <a href="https://curl.haxx.se/docs/manpage.html#-k" target="_blank" rel="noopener"><strong>&#8211;insecure</strong></a></td>
<td>Ignore SSL Certificate-related errors (e.g., allow expired certificate or untrusted certificate)</td>
<td><span style="margin: 0px;padding: 0px">Go to the Advanced Tab and check the &#8221; ignore SSL Related Errors option <a href="https://zappysys.zendesk.com/hc/article_attachments/360000122334/mceclip2.png" target="_blank" rel="noopener">like this</a>.</span></td>
</tr>
<tr>
<td><strong>-x</strong>, <a href="https://curl.haxx.se/docs/manpage.html#-x" target="_blank" rel="noopener"><strong>&#8211;proxy</strong></a> <em>[protocol://]host[:port]</em></td>
<td>Specify Proxy Settings</td>
<td>You can enable System default proxy or a custom proxy using the Proxy Tab in the OAuth / HTTP Connection Manager. <a href="https://i2.wp.com/zappysys.com/blog/wp-content/uploads/2016/07/ssis-powerpack-http-proxy-options.png?ssl=1" target="_blank" rel="noopener">Check this</a>.</td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
</div>
<h2>Convert Curl Syntax to SSIS PowerPack &#8211; REST API Task / JSON / XML Connector</h2>
<p>Take a look at the following example of <strong>CURL </strong>syntax</p><pre class="crayon-plain-tag">curl POST -u myusername:mypassword -H "Accept: application/json" -H "AppVersion:1.0" "https://mysite/v1/api/customers/" -d "customerid=AAA&amp;OrderDate=2016-01-01"</pre><p>
<strong>Where :</strong></p>
<pre class="crayon-plain-tag">-u</pre>  or <pre class="crayon-plain-tag">--user</pre>  = UserID and Password for server (This option sends credentials in BASIC Authentication mode)<br />
<pre class="crayon-plain-tag">-H</pre>  or <pre class="crayon-plain-tag">--header</pre>  = HTTP Header (e.g. Key: Value)<br />
<pre class="crayon-plain-tag">-d</pre>  or <pre class="crayon-plain-tag">--data</pre>  = Data for POST</p>
<p>For step-by-step information, check Article <a href="https://zappysys.com/blog/http-post-in-ssis-send-data-to-web-api-url-json-xml/" target="_blank" rel="noopener">Learn how to POST data to a URL using SSIS</a></p>
<p>Here is the screenshot of HTTP POST in JSON format using the <a href="https://zappysys.com/products/ssis-powerpack/ssis-rest-api-web-service-task/" target="_blank" rel="noopener">ZappySys REST API Task</a></p>
<div id="attachment_11608" style="width: 848px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2016/11/REST-API-task-configuration.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-11608" class="wp-image-11608 size-full" src="https://zappysys.com/blog/wp-content/uploads/2016/11/REST-API-task-configuration.png" alt="" width="838" height="735" srcset="https://zappysys.com/blog/wp-content/uploads/2016/11/REST-API-task-configuration.png 838w, https://zappysys.com/blog/wp-content/uploads/2016/11/REST-API-task-configuration-300x263.png 300w, https://zappysys.com/blog/wp-content/uploads/2016/11/REST-API-task-configuration-768x674.png 768w" sizes="(max-width: 838px) 100vw, 838px" /></a><p id="caption-attachment-11608" class="wp-caption-text">Convert CURL Command Line Syntax to SSIS &#8211; Perform HTTP POST operation using SSIS REST API Task &#8211; Send data in JSON content type</p></div>
<p>If you wish to POST data and parse the JSON response into rows, you can use the <a href="//zappysys.com/products/ssis-powerpack/ssis-json-file-source/" target="_blank" rel="noopener">SSIS JSON Source</a>. JSON Source has a powerful JSON Parser that parses large JSON (stored in a file, an API URL, or a Direct string) into Rows and Columns. This is useful if you wish to save the response into a target such as SQL Server or a CSV file.</p>
<div id="attachment_11606" style="width: 838px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2016/11/JSON-configuration.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-11606" class="wp-image-11606 size-full" src="https://zappysys.com/blog/wp-content/uploads/2016/11/JSON-configuration.png" alt="" width="828" height="745" srcset="https://zappysys.com/blog/wp-content/uploads/2016/11/JSON-configuration.png 828w, https://zappysys.com/blog/wp-content/uploads/2016/11/JSON-configuration-300x270.png 300w, https://zappysys.com/blog/wp-content/uploads/2016/11/JSON-configuration-768x691.png 768w" sizes="(max-width: 828px) 100vw, 828px" /></a><p id="caption-attachment-11606" class="wp-caption-text">JSON Source example</p></div>
<h3>HTTP Headers &#8211; Convert Curl Syntax to SSIS</h3>
<p>Set up HTTP headers in ZappySys Task/Connect, or click on Raw Edit or Add/Edit items in Grid.</p>
<h3>HTTP Credentials &#8211; Convert Curl Syntax to SSIS</h3>
<p>Here is how you pass credentials in the curl command line.</p><pre class="crayon-plain-tag">curl.exe https://myserver.com/api -u myusername:mypassword</pre><p>
To setup HTTP credentials in SSIS for Basic / NTFS or Kerberos use HTTP Connection Manager (Access Mode must be changed to Url from Connection on <a href="//zappysys.com/products/ssis-powerpack/ssis-rest-api-web-service-task/" target="_blank" rel="noopener">ZappySys REST API Task</a> and for <a href="//zappysys.com/products/ssis-powerpack/ssis-json-file-source/" target="_blank" rel="noopener">JSON Source Connector</a> or <a href="//zappysys.com/products/ssis-powerpack/ssis-xml-source/" target="_blank" rel="noopener">XML Source</a>  check Use Connection Option)</p>
<p>If you have OAuth 2.0 Credentials (Application ID, Application Secret) then use <a href="//zappysys.com/onlinehelp/ssis-powerpack/scr/ssis-oauth-connection-manager.htm" target="_blank" rel="noopener">SSIS OAuth Connection Manager</a> rather than <a href="http://view-source://zappysys.com/onlinehelp/ssis-powerpack/scr/ssis-http-connection-manager.htm" target="_blank" rel="noopener">HTTP Connection</a></p>
<p>Check this article to learn about <a href="https://zappysys.com/blog/how-to-set-base64-encoded-authorization-header-for-http-web-request/" target="_blank" rel="noopener">how to pass HTTP Basic Credentials in SSIS PowerPack</a></p>
<h3>Proxy Setting &#8211; Convert Curl Syntax to SSIS</h3>
<p>Here is how you pass Proxy server info in cUrl command line (<pre class="crayon-plain-tag">-x</pre>  along with Proxy Server Host/IP and Port)</p><pre class="crayon-plain-tag">curl.exe -x 192.168.2.1:8888 https://myserver.com/api</pre><p>
<h2>Convert Curl Syntax to SSIS &#8211; Client Certificate Settings</h2>
<div>
<h3 class="screenshot_header">HTTP Connection Manager UI</h3>
<p><img decoding="async" class="figureimage" title="HTTP Connection Manager UI" src="//zappysys.com/onlinehelp/ssis-powerpack/scr/images/http-connection/ssis-http-connection-manager-ui.png" alt="HTTP Connection Manager UI" /></p>
</div>
<div>
<h3 class="screenshot_header">Passing client certificate along with Web request (i.e. pfx/pkcs12/p12)</h3>
<p><img decoding="async" class="figureimage" title="Passing client certificate along with Web request (From Local/User store)" src="//zappysys.com/onlinehelp/ssis-powerpack/scr/images/http-connection/http-web-request-send-client-side-certificate.png" alt="Passing client certificate along with Web request (From Local/User store)" /></p>
</div>
<div>
<h3 class="screenshot_header">Passing client certificate from file path (i.e. pfx/pkcs12/p12)</h3>
<p><a href="https://zappysys.com/blog/wp-content/uploads/2016/11/Passing-client-certificate.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-11607" src="https://zappysys.com/blog/wp-content/uploads/2016/11/Passing-client-certificate.png" alt="" width="721" height="549" srcset="https://zappysys.com/blog/wp-content/uploads/2016/11/Passing-client-certificate.png 721w, https://zappysys.com/blog/wp-content/uploads/2016/11/Passing-client-certificate-300x228.png 300w" sizes="(max-width: 721px) 100vw, 721px" /></a></p>
</div>
<p>The post <a href="https://zappysys.com/blog/using-ssis-curl-syntax-to-ssis-api-task/">Convert CURL to SSIS PowerPack / ODBC for API Call</a> appeared first on <a href="https://zappysys.com/blog">ZappySys Blog</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Tutorial &#8211; How to use Fiddler to analyze HTTP Web Requests (Tips)</title>
		<link>https://zappysys.com/blog/how-to-use-fiddler-to-analyze-http-web-requests/</link>
		
		<dc:creator><![CDATA[ZappySys]]></dc:creator>
		<pubDate>Tue, 26 Jul 2016 21:47:54 +0000</pubDate>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[curl]]></category>
		<category><![CDATA[fiddler]]></category>
		<category><![CDATA[http]]></category>
		<category><![CDATA[rest api]]></category>
		<category><![CDATA[soap]]></category>
		<category><![CDATA[SSIS PowerPack]]></category>
		<category><![CDATA[web proxy]]></category>
		<guid isPermaLink="false">http://zappysys.com/blog/?p=700</guid>

					<description><![CDATA[<p>Introduction Fiddler is one the most popular tool to inspect your Http Traffic. This tool helps you to test REST API / SOAP Web requests very easily. If you are using SSIS PowerPack or REST API ODBC Drivers you will find this post really useful to debug various REST API integration issues. When you run Fiddler [&#8230;]</p>
<p>The post <a href="https://zappysys.com/blog/how-to-use-fiddler-to-analyze-http-web-requests/">Tutorial &#8211; How to use Fiddler to analyze HTTP Web Requests (Tips)</a> appeared first on <a href="https://zappysys.com/blog">ZappySys Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Introduction</h2>
<p><a href="http://www.telerik.com/fiddler" target="_blank" rel="noopener">Fiddler</a> is one the most popular tool to inspect your Http Traffic. This tool helps you to test REST API / SOAP Web requests very easily. If you are using <a href="https://zappysys.com/products/ssis-powerpack/">SSIS PowerPack</a> or <a href="https://zappysys.com/products/odbc-powerpack/" target="_blank" rel="noopener">REST API ODBC Drivers</a> you will find this post really useful to debug various REST API integration issues.</p>
<p>When you run Fiddler on your system, it acts as a tiny Web Proxy that sits between your client application and the webserver. Fiddler only starts capturing traffic when you running it. By default, it runs on the local machine (127.0.0.1) Port <strong>8888</strong>. You can change the default port from <strong>Tools</strong> &gt; <strong>Options</strong>.</p>
<h2>How to download Fiddler (it&#8217;s FREE)</h2>
<p>You can download <strong>Fiddler Classic</strong> <a href="https://www.telerik.com/download/fiddler/fiddler4" target="_blank" rel="noopener">using this link</a> for FREE (If that link doesn&#8217;t work then try <a href="https://www.telerik.com/download/fiddler" target="_blank" rel="noopener">this one</a>)</p>
<p><strong>Make sure that you have Downloaded the <a href="https://www.telerik.com/download/fiddler" target="_blank" rel="noopener">Fiddler Classic</a> and not a Fiddler Everywhere. </strong>Both products might have same features listed in this article but screenshots and steps listed in this article is about Fiddler Classic.</p>
<div class="su-note"  style="border-color:#e5de9d;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;"><div class="su-note-inner su-u-clearfix su-u-trim" style="background-color:#fff8b7;border-color:#ffffff;color:#333333;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;"><strong>Fiddler is a third party</strong> <strong><a href="https://www.telerik.com/fiddler" target="_blank" rel="noopener">Telerik&#8217;s</a> tool</strong> used to log, inspect, and alter HTTP and HTTPS traffic between a computer and a web server or servers.<br />
<strong>It is not our product,</strong> this article is just to show you how you can analyze the API Request and Response call made from our Tasks/Components/Drivers.</div></div>
<h2>How to start/stop Fiddler two ways &#8211; Capture HTTP(s) Traffic</h2>
<p>After you install Fiddler, Go to <strong>Start Menu </strong> &gt;<strong>Search for Fiddler</strong></p>
<p>Launch Fiddler exe and it will start capturing HTTP traffic (For HTTPS URL see next section).</p>
<p>Run fiddler to start capturing web requests/responses made by various client applications on your system (e.g. Curl, Chrome, Internet Explorer). To start/stop capture go to File &gt; Check/Uncheck <strong>[Capture Traffic]</strong> option.</p>
<p>By default when you run Fiddler it behaves like the default proxy server on your system. However, not all web requests appear in fiddler unless the client application using a system Default Proxy.</p>
<div id="attachment_3555" style="width: 317px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2016/07/fiddler-start-stop-web-traffic-capture.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-3555" class="size-full wp-image-3555" src="https://zappysys.com/blog/wp-content/uploads/2016/07/fiddler-start-stop-web-traffic-capture.png" alt="Start / Stop Fiddler Capture" width="307" height="329" srcset="https://zappysys.com/blog/wp-content/uploads/2016/07/fiddler-start-stop-web-traffic-capture.png 307w, https://zappysys.com/blog/wp-content/uploads/2016/07/fiddler-start-stop-web-traffic-capture-280x300.png 280w" sizes="(max-width: 307px) 100vw, 307px" /></a><p id="caption-attachment-3555" class="wp-caption-text">Start / Stop Fiddler Capture</p></div>
<h2>How to capture HTTPS traffic in Fiddler</h2>
<p>By default <strong>Fiddler</strong> doesn&#8217;t show the content of Web requests made to <strong>HTTPS</strong> Url (Secure site) because it&#8217;s encrypted. Perform the following steps if you want to see HTTPS Traffic.</p>
<ol>
<li>Launch Fiddler</li>
<li>Go to <strong>Tools</strong> &gt; Telerik Fiddler <strong>Options</strong> &gt; <strong>HTTPS</strong> &gt; Check [<strong>Decrypt Https Traffic</strong> Option]
<div id="attachment_3554" style="width: 348px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2016/07/fiddler-capture-https-traffic-decrypt-option.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-3554" class="size-full wp-image-3554" src="https://zappysys.com/blog/wp-content/uploads/2016/07/fiddler-capture-https-traffic-decrypt-option.png" alt="Fiddler Option - Decrypt HTTPS Traffic" width="338" height="229" srcset="https://zappysys.com/blog/wp-content/uploads/2016/07/fiddler-capture-https-traffic-decrypt-option.png 338w, https://zappysys.com/blog/wp-content/uploads/2016/07/fiddler-capture-https-traffic-decrypt-option-300x203.png 300w" sizes="(max-width: 338px) 100vw, 338px" /></a><p id="caption-attachment-3554" class="wp-caption-text">Fiddler Option &#8211; Decrypt HTTPS Traffic</p></div></li>
<li>Once prompted <strong>Accept</strong> certificate generated by Fiddler</li>
</ol>
<p>&nbsp;</p>
<h2 class="mceTemp">How to filter traffic for specific Domain or URL (contains)</h2>
<p>If you see lots of unwanted log entries after you enable Capturing then try following setting to Include / Clude certain log entries from the Capture making it easier to analyze.</p>
<ol>
<li>Go to Filters Tab</li>
<li>Check Show only if URL contains. Type any words you like to check in URL. e.g. zappysys.com will include only those URL which has &#8220;zappysys.com&#8221; anywhere in the Full URL. You can add multiple included by adding space after words</li>
<li> If you like to exclude some URLs then check Hide if URL contains option and enter string like previous step<br />
<a href="https://zappysys.com/blog/wp-content/uploads/2016/07/fiddler-include-exclude-filter-by-domain-url-string.png"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-11182" src="https://zappysys.com/blog/wp-content/uploads/2016/07/fiddler-include-exclude-filter-by-domain-url-string.png" alt="" width="576" height="488" srcset="https://zappysys.com/blog/wp-content/uploads/2016/07/fiddler-include-exclude-filter-by-domain-url-string.png 576w, https://zappysys.com/blog/wp-content/uploads/2016/07/fiddler-include-exclude-filter-by-domain-url-string-300x254.png 300w" sizes="(max-width: 576px) 100vw, 576px" /></a></li>
</ol>
<h2>How to view Web Request and Response in Fiddler</h2>
<p>Once your web requests appear on the left side panel. Simply double click on the request entry to view. On your right side, you will see two panels.</p>
<ol>
<li>Top  Panel &#8211; Request View</li>
<li>Bottom Panel &#8211; Response View</li>
</ol>
<p>Here is an example of seeing API calls generated by <a href="https://zappysys.com/blog/how-to-call-amazon-aws-api-using-ssis-ec2-lambda-api-gateway-sqs/" target="_blank" rel="noopener">aws command line</a> requests/response in Fiddler.</p>
<div id="attachment_2314" style="width: 1175px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2017/11/ssis-get-raw-rest-request-aws-commandline-cli-capture-fiddler.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-2314" class="size-full wp-image-2314" src="https://zappysys.com/blog/wp-content/uploads/2017/11/ssis-get-raw-rest-request-aws-commandline-cli-capture-fiddler.png" alt="Capture AWS Commandline (CLI) request using Fiddler" width="1165" height="640" srcset="https://zappysys.com/blog/wp-content/uploads/2017/11/ssis-get-raw-rest-request-aws-commandline-cli-capture-fiddler.png 1165w, https://zappysys.com/blog/wp-content/uploads/2017/11/ssis-get-raw-rest-request-aws-commandline-cli-capture-fiddler-300x165.png 300w, https://zappysys.com/blog/wp-content/uploads/2017/11/ssis-get-raw-rest-request-aws-commandline-cli-capture-fiddler-768x422.png 768w, https://zappysys.com/blog/wp-content/uploads/2017/11/ssis-get-raw-rest-request-aws-commandline-cli-capture-fiddler-1024x563.png 1024w" sizes="(max-width: 1165px) 100vw, 1165px" /></a><p id="caption-attachment-2314" class="wp-caption-text">Capture AWS Command line (CLI) request using Fiddler</p></div>
<h2>How to Test API using Fiddler (Call REST API for without Postman)</h2>
<p>Fiddler comes with another cool feature just like <a href="https://zappysys.com/blog/postman-to-ssis-odbc-powerpack/" target="_blank" rel="noopener">Postman</a> so you can test your API call. Basically, there will be a time when you like to edit your request and test with different data (e.g. URL / Body or Headers). If that&#8217;s the case you can directly go to Composer Tab or Replay existing request right Right Click.</p>
<p><strong>How to replay existing request / edit / send new request</strong></p>
<p>To reply to the existing request</p>
<div id="attachment_6429" style="width: 1108px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2016/07/fiddler-debug-web-request-replay-composer-test-rest-api-call-like-postman.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-6429" class="size-full wp-image-6429" src="https://zappysys.com/blog/wp-content/uploads/2016/07/fiddler-debug-web-request-replay-composer-test-rest-api-call-like-postman.png" alt="Test Web Requests in Fiddler Composer - Replay existing REST API requests or send new one (Edit Header, Body, URL)" width="1098" height="470" srcset="https://zappysys.com/blog/wp-content/uploads/2016/07/fiddler-debug-web-request-replay-composer-test-rest-api-call-like-postman.png 1098w, https://zappysys.com/blog/wp-content/uploads/2016/07/fiddler-debug-web-request-replay-composer-test-rest-api-call-like-postman-300x128.png 300w, https://zappysys.com/blog/wp-content/uploads/2016/07/fiddler-debug-web-request-replay-composer-test-rest-api-call-like-postman-768x329.png 768w, https://zappysys.com/blog/wp-content/uploads/2016/07/fiddler-debug-web-request-replay-composer-test-rest-api-call-like-postman-1024x438.png 1024w" sizes="(max-width: 1098px) 100vw, 1098px" /></a><p id="caption-attachment-6429" class="wp-caption-text">Test Web Requests in Fiddler Composer &#8211; Replay existing REST API requests or send new one (Edit Header, Body, URL)</p></div>
<p>&nbsp;</p>
<h2>How to view and format JSON / XML data in Fiddler</h2>
<p>By default Fiddler will show you JSON  / XML Tab if request body or response data in that format (see JSON / XML tabs on top and bottom panels). But what if you like to see in Raw Text but in Syntax Highlighted  / formatted way?</p>
<p>&nbsp;</p>
<div id="attachment_6430" style="width: 575px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2016/07/fiddler-view-formatted-json-xml-syntax-request-response-highlighting.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-6430" class="size-full wp-image-6430" src="https://zappysys.com/blog/wp-content/uploads/2016/07/fiddler-view-formatted-json-xml-syntax-request-response-highlighting.png" alt="Format Fiddler Request / Response (XML or JSON). View text with Syntax Highlighting" width="565" height="456" srcset="https://zappysys.com/blog/wp-content/uploads/2016/07/fiddler-view-formatted-json-xml-syntax-request-response-highlighting.png 565w, https://zappysys.com/blog/wp-content/uploads/2016/07/fiddler-view-formatted-json-xml-syntax-request-response-highlighting-300x242.png 300w" sizes="(max-width: 565px) 100vw, 565px" /></a><p id="caption-attachment-6430" class="wp-caption-text">Format Fiddler Request / Response (XML or JSON). View text with Syntax Highlighting</p></div>
<h2>How to use fiddler Converters (e.g. Base64 / URL encode &#8211; decode)</h2>
<p>There will be a time when you like to encode / decode strings appearing in web requests. Fiddler has another very handy feature call Send to Text Wizard. This option appears in most right click Menu in Raw / Syntax View / Headers view and other places.</p>
<div id="attachment_6433" style="width: 661px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2016/07/fiddler-sendto-convert-base64-encode-decode.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-6433" class="size-full wp-image-6433" src="https://zappysys.com/blog/wp-content/uploads/2016/07/fiddler-sendto-convert-base64-encode-decode.png" alt="Encode / Decode / Convert Text in Fiddler (e.g. Base64, URL Encode)" width="651" height="465" srcset="https://zappysys.com/blog/wp-content/uploads/2016/07/fiddler-sendto-convert-base64-encode-decode.png 651w, https://zappysys.com/blog/wp-content/uploads/2016/07/fiddler-sendto-convert-base64-encode-decode-300x214.png 300w" sizes="(max-width: 651px) 100vw, 651px" /></a><p id="caption-attachment-6433" class="wp-caption-text">Encode / Decode / Convert Text in Fiddler (e.g. Base64, URL Encode)</p></div>
<h2>How to add Request Start Time, Overall Elapsed Time Columns in Fiddler</h2>
<p>It&#8217;s really useful to see how much time each request is taking. For that, you can try the below steps in Fiddler Classic</p>
<ol>
<li>Right-click on any Header Column</li>
<li>Select &#8220;Customize Columns&#8221;</li>
<li>Choose &#8220;<strong>Session Timers</strong>&#8220;</li>
<li> Choose <strong>Overall_Elaspsed</strong> and  <strong>ClientConnectedTime</strong> from the dropdown</li>
</ol>
<div id="attachment_9523" style="width: 641px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2016/07/fiddler-overall-elapsed-time.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-9523" class="wp-image-9523 size-full" src="https://zappysys.com/blog/wp-content/uploads/2016/07/fiddler-overall-elapsed-time.png" alt="How to see request start time, overall elapsed time in Fiddler" width="631" height="526" srcset="https://zappysys.com/blog/wp-content/uploads/2016/07/fiddler-overall-elapsed-time.png 631w, https://zappysys.com/blog/wp-content/uploads/2016/07/fiddler-overall-elapsed-time-300x250.png 300w" sizes="(max-width: 631px) 100vw, 631px" /></a><p id="caption-attachment-9523" class="wp-caption-text">How to see request start time, overall elapsed time in Fiddler</p></div>
<h2>How to edit and execute the processed requests in Fiddler</h2>
<p>If you want to re-execute existing requests in Fiddler with different parameters then try the below steps</p>
<ol>
<li>Select request from the left-hand side panel (or may be bottom side)</li>
<li>Press &#8220;<strong>E</strong>&#8221; and you will see a panel like below</li>
<li>Edit your request (i.e. URL, Header or Body)</li>
<li>Click on <strong>Run to Complete</strong></li>
</ol>
<div id="attachment_9522" style="width: 1013px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2016/07/fiddler-edit-execute-request.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-9522" class="wp-image-9522 size-full" src="https://zappysys.com/blog/wp-content/uploads/2016/07/fiddler-edit-execute-request.png" alt="" width="1003" height="476" srcset="https://zappysys.com/blog/wp-content/uploads/2016/07/fiddler-edit-execute-request.png 1003w, https://zappysys.com/blog/wp-content/uploads/2016/07/fiddler-edit-execute-request-300x142.png 300w, https://zappysys.com/blog/wp-content/uploads/2016/07/fiddler-edit-execute-request-768x364.png 768w" sizes="(max-width: 1003px) 100vw, 1003px" /></a><p id="caption-attachment-9522" class="wp-caption-text">Edit, Execute Processed Requests in Fiddler</p></div>
<h2>How to enable AutoResponder &#8211; Fake Response (Rule based)</h2>
<p>If you want to test some API calls for testing purposes, then you can use the AutoResponder feature of Fiddler. It allows you to match URL pattern and send response text from a local file. Here is how to enable Fake Response (Rule-based Auto Response)</p>
<ol>
<li>Select URL from the log (Optional) &#8211; If you skip this step then in step#3 you will have to enter URL manually.</li>
<li> Go to AutoResponder Tab</li>
<li>Click Add Rule (if you didn&#8217;t select Log entry then Rule editor will have blank URL)</li>
<li>Enter / Change URL Rule in the Rule editor if needed. By default it uses EXACT match rule. <a href="https://docs.telerik.com/fiddler/knowledge-base/autoresponder" target="_blank" rel="noopener">Click here to learn</a> more about more rules</li>
<li>Enter a file path where you have saved Fake Response you like to serve if URL rule.</li>
</ol>
<p><strong>Examples:</strong></p>
<p>Exact URL match:   <pre class="crayon-plain-tag">EXACT:HTTP://abc.com/api/v3/projects/123/milestones</pre>
<p>Pattern URL match: <pre class="crayon-plain-tag">method:GET regex:(.*)/api/v3/projects/([\w\d-])+/milestones(.*)</pre>
<div id="attachment_11184" style="width: 1292px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2016/07/fiddler-auto-responder-rule-match-response-from-local-file.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-11184" class="size-full wp-image-11184" src="https://zappysys.com/blog/wp-content/uploads/2016/07/fiddler-auto-responder-rule-match-response-from-local-file.png" alt="Fiddler AutoResponder (Test Fake Response from local file - Rule match based on URL Pattern)" width="1282" height="810" srcset="https://zappysys.com/blog/wp-content/uploads/2016/07/fiddler-auto-responder-rule-match-response-from-local-file.png 1282w, https://zappysys.com/blog/wp-content/uploads/2016/07/fiddler-auto-responder-rule-match-response-from-local-file-300x190.png 300w, https://zappysys.com/blog/wp-content/uploads/2016/07/fiddler-auto-responder-rule-match-response-from-local-file-1024x647.png 1024w, https://zappysys.com/blog/wp-content/uploads/2016/07/fiddler-auto-responder-rule-match-response-from-local-file-768x485.png 768w" sizes="(max-width: 1282px) 100vw, 1282px" /></a><p id="caption-attachment-11184" class="wp-caption-text">Fiddler AutoResponder (Test Fake Response from local file &#8211; Rule match based on URL Pattern)</p></div>
<h2>How to diff Fiddler requests</h2>
<p>Sometimes you like to see difference between two requests. Fiddler comes with very handy feature. Just select two requests and click Diff Option in Right click menu. For diff to work make sure you install some diff utilities like <strong>KDiff3</strong> or <a href="http://winmerge.org/downloads/?lang=en" target="_blank" rel="noopener">WinMerge</a>.</p>
<div id="attachment_5765" style="width: 1417px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2016/07/fiddler-compare-requests-find-diff.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-5765" class="size-full wp-image-5765" src="https://zappysys.com/blog/wp-content/uploads/2016/07/fiddler-compare-requests-find-diff.png" alt="Compare requests in Fiddler / Reissue same request with changes (Composer Tab)" width="1407" height="560" srcset="https://zappysys.com/blog/wp-content/uploads/2016/07/fiddler-compare-requests-find-diff.png 1407w, https://zappysys.com/blog/wp-content/uploads/2016/07/fiddler-compare-requests-find-diff-300x119.png 300w, https://zappysys.com/blog/wp-content/uploads/2016/07/fiddler-compare-requests-find-diff-768x306.png 768w, https://zappysys.com/blog/wp-content/uploads/2016/07/fiddler-compare-requests-find-diff-1024x408.png 1024w" sizes="(max-width: 1407px) 100vw, 1407px" /></a><p id="caption-attachment-5765" class="wp-caption-text">Compare requests in Fiddler / Reissue same request with changes (Composer Tab)</p></div>
<h2>How to show SSIS PowerPack requests in Fiddler</h2>
<p>In most cases SSIS PowerPack requests will apperar in Fiddler without any extra configurations. However in some cases applications like SSIS PowerPack cannot detect it as System Default Proxy automatically. In that case try to enable Proxy settings in <a href="https://zappysys.com/onlinehelp/ssis-powerpack/scr/ssis-http-connection-manager.htm" target="_blank" rel="noopener">HTTP Connection</a> or <a href="https://zappysys.com/onlinehelp/ssis-powerpack/scr/ssis-oauth-connection-manager.htm" target="_blank" rel="noopener">OAuth Connection</a>.  If you are not using connection manager then some Components like JSON Source offers its own Proxy tab so just check Enable Proxy.</p>
<p>By default Fiddler register itself as Default Web Proxy on port 8888  (i.e.  <pre class="crayon-plain-tag">http://127.0.0.1:8888</pre>  )</p>
<div id="attachment_3556" style="width: 606px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2016/07/ssis-powerpack-http-proxy-options.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-3556" class="size-full wp-image-3556" src="https://zappysys.com/blog/wp-content/uploads/2016/07/ssis-powerpack-http-proxy-options.png" alt="Using Proxy Settings in SSIS PowerPack" width="596" height="458" srcset="https://zappysys.com/blog/wp-content/uploads/2016/07/ssis-powerpack-http-proxy-options.png 596w, https://zappysys.com/blog/wp-content/uploads/2016/07/ssis-powerpack-http-proxy-options-300x231.png 300w" sizes="(max-width: 596px) 100vw, 596px" /></a><p id="caption-attachment-3556" class="wp-caption-text">Using Proxy Settings in SSIS PowerPack</p></div>
<h2>View HTTP Request in Fiddler</h2>
<p>To inspect HTTP <strong>Web Request</strong> using Fiddler perform following steps.</p>
<ol>
<li>Click on the web request entry on left pane</li>
<li>Click on the <strong>Inspector Tab</strong> &gt; Click Raw from top panel</li>
</ol>
<h2>View HTTP Response in Fiddler</h2>
<p>To inspect HTTP <strong>Web Response</strong> using Fiddler perform following steps.</p>
<ol>
<li>Click on the web request entry on left pane</li>
<li>Click on the Inspector Tab &gt; Click Raw from bottom panel</li>
<li>You can also click on JSON or XML Tab if your want to see response coming in specific format</li>
</ol>
<p>&nbsp;</p>
<div id="attachment_546" style="width: 710px" class="wp-caption alignnone"><a href="//zappysys.com/blog/wp-content/uploads/2016/06/fiddler-http-multipart-form-data-example-rest-api-file-upload-post.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-546" class="wp-image-546" src="//zappysys.com/blog/wp-content/uploads/2016/06/fiddler-http-multipart-form-data-example-rest-api-file-upload-post.png" alt="How to use Fiddler - Analyze Web Requests- File Upload Example - Check Fiddler Request" width="700" height="444" srcset="https://zappysys.com/blog/wp-content/uploads/2016/06/fiddler-http-multipart-form-data-example-rest-api-file-upload-post.png 989w, https://zappysys.com/blog/wp-content/uploads/2016/06/fiddler-http-multipart-form-data-example-rest-api-file-upload-post-300x190.png 300w" sizes="(max-width: 700px) 100vw, 700px" /></a><p id="caption-attachment-546" class="wp-caption-text">HTTTP Multipart POST &#8211; File Upload Example &#8211; Check Fiddler Request</p></div>
<h2>View compressed (i.e. gzip, deflate) Response in Fiddler raw view</h2>
<p>When response is compressed then by default you wont be able to see it in Raw tab. When response is compressed you may see header like below in response headers. You can also click on</p><pre class="crayon-plain-tag">Content-Encoding: gzip</pre><p>
To view compressed response in fiddler perform following steps.</p>
<ol>
<li>Click on the web request entry on left pane</li>
<li>Click on the Inspector Tab &gt; Click Transformer tab from bottom panel</li>
<li>Click on transformer tab and select No compression option and then click Raw tab</li>
</ol>
<div id="attachment_871" style="width: 649px" class="wp-caption alignnone"><a href="//zappysys.com/blog/wp-content/uploads/2016/07/fiddler-view-uncompressed-data-gzip-deflate-encoding.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-871" class="size-full wp-image-871" src="//zappysys.com/blog/wp-content/uploads/2016/07/fiddler-view-uncompressed-data-gzip-deflate-encoding.png" alt="View uncompressed data in Fiddler (GZip, Deflate Encoding)" width="639" height="486" srcset="https://zappysys.com/blog/wp-content/uploads/2016/07/fiddler-view-uncompressed-data-gzip-deflate-encoding.png 639w, https://zappysys.com/blog/wp-content/uploads/2016/07/fiddler-view-uncompressed-data-gzip-deflate-encoding-300x228.png 300w" sizes="(max-width: 639px) 100vw, 639px" /></a><p id="caption-attachment-871" class="wp-caption-text">View uncompressed data in Fiddler (GZip, Deflate Encoding)</p></div>
<h2>How to view Formatted JSON / XML</h2>
<p>If you have JSON or XML response and you like to view formatted documents then you can go to Syntax View in the Response Panel and right-click and format</p>
<div id="attachment_11079" style="width: 1009px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2016/07/fiddler-format-json-xml-request-response.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-11079" class="size-full wp-image-11079" src="https://zappysys.com/blog/wp-content/uploads/2016/07/fiddler-format-json-xml-request-response.png" alt="How to format Fiddler Request / Response (JSON/XML document)" width="999" height="484" srcset="https://zappysys.com/blog/wp-content/uploads/2016/07/fiddler-format-json-xml-request-response.png 999w, https://zappysys.com/blog/wp-content/uploads/2016/07/fiddler-format-json-xml-request-response-300x145.png 300w, https://zappysys.com/blog/wp-content/uploads/2016/07/fiddler-format-json-xml-request-response-768x372.png 768w" sizes="(max-width: 999px) 100vw, 999px" /></a><p id="caption-attachment-11079" class="wp-caption-text">How to format Fiddler Request / Response (JSON/XML document)</p></div>
<p>&nbsp;</p>
<h2>Using Fiddler Text Wizard Tools (Encode / Decode &#8211; Hex, HTML, URL, Base64)</h2>
<p>If you would like to perform some conversions like the one below, then you can use the TextWizard tool found in Fiddler. It&#8217;s very handy. Simply right click and click on <strong>Send to TextWizard option</strong> (found in most tabs / screens)</p>
<ul>
<li>Base64 Encode / Decode</li>
<li>HTML Encode / Decode</li>
<li>URL Encode / Decode</li>
<li>Hex Encode / Decode</li>
<li>and more&#8230;</li>
</ul>
<p><strong>Launching Fiddler TextWizard from Right click menu</strong></p>
<div id="attachment_11081" style="width: 498px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2016/07/fiddler-sendto-textwizard-menu.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-11081" class="size-full wp-image-11081" src="https://zappysys.com/blog/wp-content/uploads/2016/07/fiddler-sendto-textwizard-menu.png" alt="Fiddler Send To TextWizard Menu" width="488" height="289" srcset="https://zappysys.com/blog/wp-content/uploads/2016/07/fiddler-sendto-textwizard-menu.png 488w, https://zappysys.com/blog/wp-content/uploads/2016/07/fiddler-sendto-textwizard-menu-300x178.png 300w" sizes="(max-width: 488px) 100vw, 488px" /></a><p id="caption-attachment-11081" class="wp-caption-text">Fiddler Send To TextWizard Menu</p></div>
<p><strong>Launching Fiddler TextWizard from Toolbar</strong></p>
<div id="attachment_11080" style="width: 495px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2016/07/fiddler-textwizard-option-base64-url-encode-decode.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-11080" class="size-full wp-image-11080" src="https://zappysys.com/blog/wp-content/uploads/2016/07/fiddler-textwizard-option-base64-url-encode-decode.png" alt="Fiddler TextWizard UI" width="485" height="568" srcset="https://zappysys.com/blog/wp-content/uploads/2016/07/fiddler-textwizard-option-base64-url-encode-decode.png 485w, https://zappysys.com/blog/wp-content/uploads/2016/07/fiddler-textwizard-option-base64-url-encode-decode-256x300.png 256w" sizes="(max-width: 485px) 100vw, 485px" /></a><p id="caption-attachment-11080" class="wp-caption-text">Fiddler TextWizard UI</p></div>
<h2>How to compare requests / re-execute</h2>
<p>Sometimes you want to compare two requests and find the difference. Here is how you can compare requests and re-execute same request or edit it.</p>
<div id="attachment_5765" style="width: 1417px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2016/07/fiddler-compare-requests-find-diff.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-5765" class="size-full wp-image-5765" src="https://zappysys.com/blog/wp-content/uploads/2016/07/fiddler-compare-requests-find-diff.png" alt="Compare requests in Fiddler / Reissue same request with changes (Composer Tab)" width="1407" height="560" srcset="https://zappysys.com/blog/wp-content/uploads/2016/07/fiddler-compare-requests-find-diff.png 1407w, https://zappysys.com/blog/wp-content/uploads/2016/07/fiddler-compare-requests-find-diff-300x119.png 300w, https://zappysys.com/blog/wp-content/uploads/2016/07/fiddler-compare-requests-find-diff-768x306.png 768w, https://zappysys.com/blog/wp-content/uploads/2016/07/fiddler-compare-requests-find-diff-1024x408.png 1024w" sizes="(max-width: 1407px) 100vw, 1407px" /></a><p id="caption-attachment-5765" class="wp-caption-text">Compare requests in Fiddler / Reissue same request with changes (Composer Tab)</p></div>
<h2>How to show web request of Curl in Fiddler</h2>
<p>By default some application such as <a href="https://curl.haxx.se/docs/manpage.html" target="_blank" rel="noopener">Curl </a>doesn&#8217;t use system default Proxy. That means if you running <strong>Fiddler</strong> and trying to analyze requests made from <strong>Curl command line</strong> then it wont show up. Its easy to tell curl that which proxy server to use. Just use <strong>-x</strong> command line option with proxy server IP and Port (e.g. Default Fiddler IP and port &#8230; 127.0.0.1:8888 )</p><pre class="crayon-plain-tag">curl.exe -v -x 127.0.0.1:8888 https://google.com</pre><p>
<h2></h2>
<h2>How to show SoapUI requests in Fiddler</h2>
<p>If you are using an application like <strong>SoapUI</strong> then also it may not use Fiddler as default web proxy. to show your SoapUI web requests in Fiddler try following options</p>
<div id="attachment_3557" style="width: 575px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2016/07/soapui-enable-proxy-settings.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-3557" class="size-full wp-image-3557" src="https://zappysys.com/blog/wp-content/uploads/2016/07/soapui-enable-proxy-settings.png" alt="Configure Proxy Settings in SoapUI" width="565" height="396" srcset="https://zappysys.com/blog/wp-content/uploads/2016/07/soapui-enable-proxy-settings.png 565w, https://zappysys.com/blog/wp-content/uploads/2016/07/soapui-enable-proxy-settings-300x210.png 300w" sizes="(max-width: 565px) 100vw, 565px" /></a><p id="caption-attachment-3557" class="wp-caption-text">Configure Proxy Settings in SoapUI</p></div>
<p>&nbsp;</p>
<h2>How to show aws command line requests in Fiddler</h2>
<p>If you are using aws<a href="https://aws.amazon.com/cli/" target="_blank" rel="noopener"> command line</a> application and want to show requests in Fiddler then add <strong>&#8211;no-verify-ssl</strong> like below. This way you can capture RAW API requests and <a href="https://zappysys.com/blog/how-to-call-amazon-aws-api-using-ssis-ec2-lambda-api-gateway-sqs/" target="_blank" rel="noopener">use it like this in SSIS</a>.</p><pre class="crayon-plain-tag">aws lambda invoke --function-name HelloWorld c:\temp\outputfile.txt --no-verify-ssl --payload file://c://test/customer.json</pre><p>
<h2>How to show Windows Service requests in Fiddler (Local System Account)</h2>
<p>By default if Fiddler launched as Admin it will capture most of requests by various apps. But if your like to capture Web requests which are issued by windows service such as <a href="https://zappysys.com/products/odbc-powerpack/data-gateway/" target="_blank" rel="noopener">ZappySys Data Gateway</a> then you might have to do little extra work (Assuming Service is not setup Run As Your account). By default many service Run under &#8220;<strong>Local System</strong>&#8221; account</p>
<p>Here is how to capture those requests which are issued by service account.</p>
<ol>
<li>Go to Folder where Service Exe is located (If you are unsure simply right click on Service &gt; Properties and check path)</li>
<li>Create new file in the same folder where Service Exe is located. File name must be <strong><em>&lt;yourexename&gt;</em>.exe.config</strong></li>
<li>Enter following XML text in your config file and save<br />
<pre class="crayon-plain-tag">&lt;configuration&gt;
  &lt;system.net&gt;
    &lt;defaultProxy enabled="true"&gt;
      &lt;proxy proxyaddress="http://127.0.0.1:8888" bypassonlocal="False"/&gt;
    &lt;/defaultProxy&gt;
  &lt;/system.net&gt;
&lt;/configuration&gt;</pre>
</li>
<li>Restart Service and check Fiddler now see requests are captured</li>
</ol>
<div id="attachment_9266" style="width: 808px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2016/07/fiddler-capture-windows-service-traffic-localsystem-via-app-config.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-9266" class="size-full wp-image-9266" src="https://zappysys.com/blog/wp-content/uploads/2016/07/fiddler-capture-windows-service-traffic-localsystem-via-app-config.png" alt="Capture Windows Service Web Requests in Fiddler (App Config method)" width="798" height="552" srcset="https://zappysys.com/blog/wp-content/uploads/2016/07/fiddler-capture-windows-service-traffic-localsystem-via-app-config.png 798w, https://zappysys.com/blog/wp-content/uploads/2016/07/fiddler-capture-windows-service-traffic-localsystem-via-app-config-300x208.png 300w, https://zappysys.com/blog/wp-content/uploads/2016/07/fiddler-capture-windows-service-traffic-localsystem-via-app-config-768x531.png 768w" sizes="(max-width: 798px) 100vw, 798px" /></a><p id="caption-attachment-9266" class="wp-caption-text">Capture Windows Service Web Requests in Fiddler (App Config method)</p></div>
<h2>REST API integration using ODBC in BI Apps (e.g. Power BI, Excel, Informatica, Access, C#&#8230;)</h2>
<p>If you want to consume API data in SQL Server (without ETL) or Live API consumption in Tools like Power BI, Excel, Tableau, SSRS, Talend, Informatica then use <a href="https://zappysys.com/products/odbc-powerpack/" target="_blank" rel="noopener">ODBC PowerPack</a> from here. See below table for each use case.</p>
<div class="content_block" id="custom_post_widget-7051">ZappySys ODBC Drivers built using ODBC standard which is widely adopted by industry for a long time. Which mean the majority of BI Tools / Database Engines / ETL Tools already there will support native / 3rd party ODBC Drivers. Below is the small list of most popular tools / programming languages our Drivers support. If your tool / programming language doesn't appear in the below list, which means we have not documented use case but as long as your tool supports ODBC Standard, our drivers should work fine.

&nbsp;

<img loading="lazy" decoding="async" class="" src="//zappysys.com/images/odbc-powerpack/odbc-powerpack-integration.jpg" alt="ZappySys ODBC Drivers for REST API, JSON, XML - Integrate with Power BI, Tableau, QlikView, QlikSense, Informatica PowerCenter, Excel, SQL Server, SSIS, SSAS, SSRS, Visual Studio / WinForm / WCF, Python, C#, VB.net, PHP. PowerShell " width="750" height="372" />
<table style="valign: top;">
<tbody>
<tr>
<td>
<p style="text-align: center;"><strong>BI / Reporting Tools
Integration</strong></p>
</td>
<td style="text-align: center;"><strong>ETL Tools
Integration
</strong></td>
<td style="text-align: center;"><strong>Programming Languages</strong>
<strong>Integration</strong></td>
</tr>
<tr>
<td>
<ul>
 	<li><a href="https://zappysys.com/blog/howto-import-json-rest-api-power-bi/" target="_blank" rel="noopener">Microsoft Power BI</a></li>
 	<li><a href="https://zappysys.com/blog/import-rest-api-tableau-read-json-soap-xml-csv/">Tableau</a></li>
 	<li><a href="https://zappysys.com/blog/read-rest-api-using-ssrs-reports-call-json-xml-web-service/" target="_blank" rel="noopener">SSRS (SQL Reporting Services)</a></li>
 	<li><a href="https://zappysys.com/blog/qlik-rest-connector-examples-read-json-xml-api/" target="_blank" rel="noopener">QlikView /Qlik Sense</a></li>
 	<li><a href="https://zappysys.com/blog/call-rest-api-in-microstrategy-json-soap-xml/" target="_blank" rel="noopener">MicroStrategy</a></li>
 	<li><a href="https://zappysys.com/blog/import-rest-api-google-sheet-call-appscript-load-json-soap-xml-csv/" target="_blank" rel="noopener">Google Sheet</a></li>
 	<li><a href="https://zappysys.com/blog/import-json-excel-load-file-rest-api/" target="_blank" rel="noopener">Microsoft Excel</a></li>
 	<li><a href="https://zappysys.com/api/integration-hub/rest-api-connector/access?context=connector" target="_blank" rel="noopener">Microsoft Access</a></li>
 	<li>Oracle OBIEE</li>
 	<li>Many more (not in this list).....</li>
</ul>
</td>
<td>
<ul>
 	<li><a href="https://zappysys.com/blog/read-json-informatica-import-rest-api-json-file/" target="_blank" rel="noopener">Informatica PowerCenter</a> (Windows)</li>
 	<li>Informatica Cloud</li>
 	<li>SSIS (SQL Integration Services)</li>
 	<li><a href="https://zappysys.com/blog/import-rest-api-json-sql-server/" target="_blank" rel="noopener">SQL Server</a></li>
 	<li><a href="https://zappysys.com/blog/read-write-rest-api-data-in-talend-json-xml-soap/" target="_blank" rel="noopener">Talend Data Studio</a></li>
 	<li><a href="https://zappysys.com/blog/pentaho-read-rest-api-in-pentaho/" target="_blank" rel="noopener">Pentaho Kettle</a></li>
 	<li>Oracle OBIEE</li>
 	<li>Many more (not in this list).....</li>
</ul>
</td>
<td>
<ul>
 	<li>Visual Studio</li>
 	<li><a href="https://zappysys.com/blog/calling-rest-api-in-c/" target="_blank" rel="noopener">C#</a></li>
 	<li>C++</li>
 	<li><a href="https://zappysys.com/blog/connect-java-to-rest-api-json-soap-xml/" target="_blank" rel="noopener">JAVA</a></li>
 	<li><a href="https://zappysys.com/blog/set-rest-python-client/" target="_blank" rel="noopener">Python</a></li>
 	<li>PHP</li>
 	<li><a href="https://zappysys.com/blog/call-rest-api-powershell-script-export-json-csv/" target="_blank" rel="noopener">PowerShell</a></li>
 	<li><a href="https://zappysys.com/blog/import-rest-api-json-sql-server/" target="_blank" rel="noopener">T-SQL (Using Linked Server)</a></li>
</ul>
</td>
</tr>
</tbody>
</table>
&nbsp;</div>
<h2>Remove Fiddler Root Certificate (Uninstall / Untrust)</h2>
<p>The Fiddler certificate is unique per machine / user, so you do not have to worry about someone else reusing it to intercept traffic, but still, for some reason, if you would like to uninstall the Fiddler root certificate (installed when you checked the Decrypt option), then perform the following steps.</p>
<ol>
<li>Goto <strong>Tools &gt; Options &gt; HTTPS</strong></li>
<li><strong>Uncheck the Decrypt</strong> option first if it&#8217;s checked</li>
<li>Click on <strong>Actions</strong> &gt; <strong>Remove interception Certificates</strong></li>
</ol>
<div id="attachment_11076" style="width: 786px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2016/07/remove-fiddler-root-certificate.jpg"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-11076" class="size-full wp-image-11076" src="https://zappysys.com/blog/wp-content/uploads/2016/07/remove-fiddler-root-certificate.jpg" alt="How to remove Fiddler Root Certificate" width="776" height="374" srcset="https://zappysys.com/blog/wp-content/uploads/2016/07/remove-fiddler-root-certificate.jpg 776w, https://zappysys.com/blog/wp-content/uploads/2016/07/remove-fiddler-root-certificate-300x145.jpg 300w, https://zappysys.com/blog/wp-content/uploads/2016/07/remove-fiddler-root-certificate-768x370.jpg 768w" sizes="(max-width: 776px) 100vw, 776px" /></a><p id="caption-attachment-11076" class="wp-caption-text">How to remove Fiddler Root Certificate</p></div>
<h2>Coding-Free REST API integration using ODBC Drivers (For many Reporting / ETL Tools)</h2>
<p>If you ever need to read /write data from REST API without writing a single line of code, <a href="https://zappysys.com/products/odbc-powerpack/">check these ODBC Drivers / API Connectors</a>.</p>
<div style="width: 1090px" class="wp-caption alignnone"><a href="https://zappysys.com/products/odbc-powerpack/"><img loading="lazy" decoding="async" class="size-full" src="https://zappysys.com/wp-content/uploads/2017/11/slider-odbc-powerpack-rest-api-json-xml-drivers-1.png" alt="ODBC PowerPack is a collection of high-performance drag and drop ODBC / API Drivers for various Modern / Legacy data sources. Connect data in Reporting / ETL Tools / Programming Languages. " width="1080" height="450" /></a><p class="wp-caption-text">ODBC PowerPack is a collection of high-performance drag and drop ODBC / API Drivers for various Modern / Legacy data sources. Connect data in Reporting / ETL Tools / Programming Languages.</p></div>
<h2>Coding-Free REST API integration in SSIS (Microsoft ETL Tool)</h2>
<p>If you use SSIS as your primary etl tool and you have API integration usecase then <a href="https://zappysys.com/products/ssis-powerpack/" target="_blank" rel="noopener">check this product</a>.</p>
<p><a href="https://zappysys.com/products/ssis-powerpack/"><img decoding="async" src="//zappysys.com/wp-content/uploads/2016/10/slider-ssis-powerpack-1.png" /></a></p>
<h2></h2>
<p>The post <a href="https://zappysys.com/blog/how-to-use-fiddler-to-analyze-http-web-requests/">Tutorial &#8211; How to use Fiddler to analyze HTTP Web Requests (Tips)</a> appeared first on <a href="https://zappysys.com/blog">ZappySys Blog</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>REST API File Upload using SSIS (Multi Part POST)</title>
		<link>https://zappysys.com/blog/rest-api-file-upload-using-ssis-multi-part-post/</link>
		
		<dc:creator><![CDATA[ZappySys]]></dc:creator>
		<pubDate>Thu, 02 Jun 2016 22:42:27 +0000</pubDate>
				<category><![CDATA[SSIS REST API Task]]></category>
		<category><![CDATA[fiddler]]></category>
		<category><![CDATA[http post]]></category>
		<category><![CDATA[rest api]]></category>
		<category><![CDATA[restful]]></category>
		<category><![CDATA[ssis]]></category>
		<category><![CDATA[SSIS PowerPack]]></category>
		<category><![CDATA[ssis rest api task]]></category>
		<guid isPermaLink="false">http://zappysys.com/blog/?p=540</guid>

					<description><![CDATA[<p>Introduction In this post, you will learn how to use the SSIS REST API Task to perform REST API File Upload (i.e., RESTful file upload) to a web server. Typically, to access the REST API, you need to use a programming language, but in this post, we will use a drag-and-drop visual approach. File upload using [&#8230;]</p>
<p>The post <a href="https://zappysys.com/blog/rest-api-file-upload-using-ssis-multi-part-post/">REST API File Upload using SSIS (Multi Part POST)</a> appeared first on <a href="https://zappysys.com/blog">ZappySys Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Introduction</h2>
<p>In this post, you will learn how to use the <a target="_blank" rel="noopener">SSIS REST API Task</a> to perform REST API File Upload (i.e., RESTful file upload) to a web server. Typically, to access the REST API, you need to use a programming language, but in this post, we will use a drag-and-drop visual approach.</p>
<p>File upload using HTTP/HTTPS protocol, sometimes also known as multipart/form-data POST. Many REST APIs support file upload using HTTP methods such as POST or PUT.</p>
<p><b>Real-world scenarios:</b></p>
<ul>
<li>Uploading images/media to <a href="https://dev.twitter.com/rest/reference/post/account/update_profile_image" target="_blank" rel="noopener">Twitter</a> or Facebook</li>
<li><a href="http://developers.marketo.com/documentation/rest/import-lead/" target="_blank" rel="noopener">Import Marketo Lead files</a> using REST API</li>
</ul>
<h2>How to do REST API File Upload using SSIS</h2>
<p>First, you will have to download a <a href="//zappysys.com/products/ssis-powerpack/" target="_blank" rel="noopener">FREE Trial of SSIS PowerPack</a> (It comes with many REST API Connectors and over 30+ functional tasks/components)</p>
<ol>
<li>Download and install <a href="//zappysys.com/products/ssis-powerpack/">SSIS PowerPack from here</a></li>
<li>From the toolbox of the SSIS designer, drag the <a href="//zappysys.com/products/ssis-powerpack/ssis-rest-api-web-service-task/">ZS SSIS REST API Task</a></li>
<li>Double-click the <strong>REST API Task</strong> to configure it</li>
<li>Specify URL where you wish to <strong>POST file</strong>/other data<br />
Example: http://myserver/api/v1/uploaddata</li>
<li>Select HTTP Request Method as <strong>POST</strong> ( make sure your API Documentation for this. Sometimes it&#8217;s <strong>PUT</strong> rather than  POST)</li>
<li><strong>Check the File Upload </strong>option next to the Body text box (<span style="color: #ff6600; text-decoration: underline;">This is most important so don&#8217;t forget 🙂</span> )</li>
</ol>
<h3>Method 1 &#8211; Upload file using Raw Mode (Or POST data from a local file)</h3>
<p>The first method of uploading a file or posting data to the server from a local file is a RAW upload. To enable this you simply have to make sure 2 things.</p>
<ol>
<li>Check the File upload option next to Body.</li>
<li>In the Body, enter the local file path starting with the @ sign (e.g., @D:\Zappysys\CSV files\example1.csv)</li>
</ol>
<p>When you don&#8217;t include a Key/Value pair and only the filepath is found, then the request is treated as a RAW Upload. In raw uploads, the default content type is application/octet-stream. If you want to put a custom Content-Type, then edit the Headers in the Grid.</p>
<p>The above technique can be used to read POST data content from a local file. Using this method, only one file can be uploaded. If the remote server supports multiple files (i.e., Multi-Part/Form-Data POST), use the following process. See the screenshot below of the file content upload using Raw mode. We used <a href="https://zappysys.com/blog/how-to-use-fiddler-to-analyze-http-web-requests/" target="_blank" rel="noopener">Fiddler</a> to inspect the REST API Task&#8217;s Web requests.</p>
<div id="attachment_11586" style="width: 969px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2016/06/POST-file-data-using-SSIS-Raw-file-upload.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-11586" class="size-full wp-image-11586" src="https://zappysys.com/blog/wp-content/uploads/2016/06/POST-file-data-using-SSIS-Raw-file-upload.png" alt="" width="959" height="683" srcset="https://zappysys.com/blog/wp-content/uploads/2016/06/POST-file-data-using-SSIS-Raw-file-upload.png 959w, https://zappysys.com/blog/wp-content/uploads/2016/06/POST-file-data-using-SSIS-Raw-file-upload-300x214.png 300w, https://zappysys.com/blog/wp-content/uploads/2016/06/POST-file-data-using-SSIS-Raw-file-upload-768x547.png 768w" sizes="(max-width: 959px) 100vw, 959px" /></a><p id="caption-attachment-11586" class="wp-caption-text">POST file data using SSIS ( Raw file upload)</p></div>
<h3>Method 2 &#8211; Upload file(s) using Multi-Part / Form Data mode (Mixed content, multiple files)</h3>
<p>The second method for file upload is Multi-Part Upload. The advantage of using this method is that you can POST upload a key/value pair along with single or multiple files. To use this method, you must make sure the API supports it on the other end. Use the steps below to POST data using the Multi-Part method.  SSIS PowerPack detects RAW mode vs Multi-Part POST based on BODY content. If the Body contains an Equal sign somewhere and the File Upload option is checked, then it&#8217;s treated as a Multi-Part upload. If File Upload Option is checked and Body contains only file path which starts with @ sign then its treated as Raw content upload.</p>
<ol>
<li>Check the File upload option next to Body.</li>
<li>Now, click the edit button next to the Body text box. You may specify files/fields you wish to submit along with your request in the following format. It&#8217;s a key/value pair separated by a new line. An equal sign (=) must separate each key/value pair.<strong>NOTE: </strong>Any value starting with an at symbol (@) is treated as a File Path. If you don&#8217;t want that behavior, then use a slash, also known as an escape sequence (e.g., Somefield3StartsWithAt=\@MyTwitterHandle). You can do the same thing to add a new line character in your value. Use \r\n for a new line. Use \t for tab. Also, notice that the field name can be anything unless your API expects it in a specific way. Example: Twitter Image Upload API may expect your image file as a media field. In that case you would write &#8230;.  media=@c:\data\someimage.png &#8230;. rather than File1=@c:\data\someimage.png<br />
<pre class="crayon-plain-tag">File1=@c:\data\somedata.txt
File1.Content-Type=text/plain
File2=@c:\data\someimage.png
File2.Content-Type=image/png
Somefield1=abcdef
Somefield2=123456
Extrafield3WithNewLine=This is line1\r\nThis is line2 with tab\t and more \t tab
Somefield3StartsWithAt=\@MyTwitterHandle</pre>
Click OK to Save above.</p>
<div class="su-note"  style="border-color:#e5de9d;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;"><div class="su-note-inner su-u-clearfix su-u-trim" style="background-color:#FFF8B7;border-color:#ffffff;color:#333333;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;">NOTE: If you do not specify Content-Type of file using <pre class="crayon-plain-tag">SomeFieldName.Content-Type</pre> attribute, then the system automatically detects based on the file extension. To exclude content-type altogether, you have to set it as a blank string, like below<br />
<pre class="crayon-plain-tag">file1=@c:\temp\dump.json
file1.Content-Type=</pre>
</div></div></li>
<li>Now, click the Test button in the UI to make sure everything looks good.
<div id="attachment_11587" style="width: 848px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2016/06/Uploading-files-using-REST-API-in-SSIS-REST-API-File-upload-using-Multipart-form-data-POST.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-11587" class="size-full wp-image-11587" src="https://zappysys.com/blog/wp-content/uploads/2016/06/Uploading-files-using-REST-API-in-SSIS-REST-API-File-upload-using-Multipart-form-data-POST.png" alt="" width="838" height="735" srcset="https://zappysys.com/blog/wp-content/uploads/2016/06/Uploading-files-using-REST-API-in-SSIS-REST-API-File-upload-using-Multipart-form-data-POST.png 838w, https://zappysys.com/blog/wp-content/uploads/2016/06/Uploading-files-using-REST-API-in-SSIS-REST-API-File-upload-using-Multipart-form-data-POST-300x263.png 300w, https://zappysys.com/blog/wp-content/uploads/2016/06/Uploading-files-using-REST-API-in-SSIS-REST-API-File-upload-using-Multipart-form-data-POST-768x674.png 768w" sizes="(max-width: 838px) 100vw, 838px" /></a><p id="caption-attachment-11587" class="wp-caption-text">Uploading files using REST API in SSIS ( REST API File upload using Multipart form-data POST)</p></div></li>
</ol>
<h2>Understanding Multipart Upload / File Upload</h2>
<p>Now, let&#8217;s take a look at what it looks like in <a href="https://www.telerik.com/download/fiddler/fiddler4" target="_blank" rel="noopener">Fiddler</a> when an actual <strong>Multipart POST request</strong> is made for the REST API File upload. Notice that each field included in our HTTP POST request is separated by some random boundary. The REST API Task automatically generates this boundary. If you post an Image, then you will see binary data rather than text for file content. Here are <a href="https://zappysys.zendesk.com/hc/en-us/articles/360036068434" target="_blank" rel="noopener">some known issues</a> you need to be aware of.</p>
<div id="attachment_11585" style="width: 1000px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2016/06/fiddler-http-multipart-form-data-example-rest-api-file-upload-post-1.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-11585" class="wp-image-11585 size-full" src="https://zappysys.com/blog/wp-content/uploads/2016/06/fiddler-http-multipart-form-data-example-rest-api-file-upload-post-1.png" alt="HTTP Multipart POST - File Upload Example - Check Fiddler Request" width="990" height="557" srcset="https://zappysys.com/blog/wp-content/uploads/2016/06/fiddler-http-multipart-form-data-example-rest-api-file-upload-post-1.png 990w, https://zappysys.com/blog/wp-content/uploads/2016/06/fiddler-http-multipart-form-data-example-rest-api-file-upload-post-1-300x169.png 300w, https://zappysys.com/blog/wp-content/uploads/2016/06/fiddler-http-multipart-form-data-example-rest-api-file-upload-post-1-768x432.png 768w" sizes="(max-width: 990px) 100vw, 990px" /></a><p id="caption-attachment-11585" class="wp-caption-text">HTTP Multipart POST &#8211; File Upload Example &#8211; Check Fiddler Request</p></div>
<p><strong>Here is a Sample Multi-Part request.</strong></p>
<p>Notice a few things</p>
<ul>
<li>The first line of the body content is &#8220;Boundary.&#8221;</li>
<li>Last line in the body is also a Boundary, but it has two extra dashes at the end after the boundary line (i.e. &#8212;&#8212;&#8212;&#8211;xyzzzzz&#8211; )</li>
<li>Notice <strong>name=&#8221;something&#8221;</strong>. This is an essential attribute. This is how the target server knows which item to extract from your response.</li>
<li>Content-Type is automatically determined for a Multi-Part item when it is a file upload. Based on extension, ZappySys automatically selects the most common content type. See the next section.</li>
</ul>
<p>&nbsp;</p><pre class="crayon-plain-tag">POST https://somecompany.com/downloads/files/test/uploadtest.aspx HTTP/1.1
User-Agent: ZappySysApp/1.0.2019.10822
x-custom-hdr: 69c05bf5b6ef48dbb73c55020c50e027
Content-Type: multipart/form-data; boundary=---------------------------WebKitFormBoundary55fd218185294c408e9ef21a4ac82825
Host: somecompany.com
Content-Length: 3619
Expect: 100-continue
Accept-Encoding: gzip, deflate
Connection: Keep-Alive

-----------------------------WebKitFormBoundary55fd218185294c408e9ef21a4ac82825
Content-Disposition: form-data; name="File1"; filename="MultiPartFileUpload1.txt"
Content-Type: text/plain

A000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
-----------------------------WebKitFormBoundary55fd218185294c408e9ef21a4ac82825
Content-Disposition: form-data; name="File2"; filename="MultiPartFileUpload2.txt"
Content-Type: text/plain

B00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
-----------------------------WebKitFormBoundary55fd218185294c408e9ef21a4ac82825
Content-Disposition: form-data; name="Extrafield1"

aaaa
-----------------------------WebKitFormBoundary55fd218185294c408e9ef21a4ac82825
Content-Disposition: form-data; name="Extrafield2"

bbbb
-----------------------------WebKitFormBoundary55fd218185294c408e9ef21a4ac82825
Content-Disposition: form-data; name="Extrafield3WithNewLine"

This is line1
This is line2 with tab	tab	tab
-----------------------------WebKitFormBoundary55fd218185294c408e9ef21a4ac82825
Content-Disposition: form-data; name="Extrafield3WithAt"

@MyTwitterHandle
-----------------------------WebKitFormBoundary55fd218185294c408e9ef21a4ac82825--</pre><p>
<h2>Known Issues</h2>
<p>Sometimes you may receive the following error if your server is expecting \r\n after the last Multi-Part boundary. <a href="https://zappysys.zendesk.com/hc/en-us/articles/360036068434" target="_blank" rel="noopener">Here is the fix</a> for this error.</p><pre class="crayon-plain-tag">The remote server returned an error: (500) Internal Server Error.
Response Url: https://your-host/api

Status Code: InternalServerError 

Response Body: {"Message":"An error has occurred."
,"ExceptionMessage":"Unexpected end of MIME multipart stream. MIME multipart message is not complete.","ExceptionType":"System.IO.IOException","StackTrace":" at System.Net.Http.Formatting.Parsers.MimeMultipartBodyPartParser.&lt;ParseBuffer&gt;d__0.MoveNext()\r\n at System.Net.Http.HttpContentMultipartExtensions.MoveNextPart(MultipartAsyncContext context)"
}</pre><p>
<h2>Most common extension and Content-Type</h2>
<p>In the multi-part upload, you might have noticed that ZappySys adds a content type for some file extensions. <a href="https://zappysys.zendesk.com/hc/en-us/articles/360034303774" target="_blank" rel="noopener">Here is a full list</a> of some common extensions and their content-type</p>
<h2>Conclusion</h2>
<p>If you need to perform REST API file upload or REST API integration without learning complex APIs or programming languages (e.g., Python, Java, C#), SSIS PowerPack provides a perfect way to integrate REST APIs with your existing system. You can uncover endless possibilities with a drag-and-drop approach that is not only simple to use but also offers many options for complex scenarios.</p>
<h2>Keywords</h2>
<p>How to perform rest api file upload | How to do RESTful file upload in C# | How to do multipart file upload without cURL | How to upload multiple files using HTTP multipart forms | Rest Client Upload File | C# REST API Upload File | Rest API Upload Image | Rest API Upload File</p>
<p>The post <a href="https://zappysys.com/blog/rest-api-file-upload-using-ssis-multi-part-post/">REST API File Upload using SSIS (Multi Part POST)</a> appeared first on <a href="https://zappysys.com/blog">ZappySys Blog</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Calling Web API in SSIS with Authorization and Redirect</title>
		<link>https://zappysys.com/blog/pass-authorization-header-redirected-location/</link>
		
		<dc:creator><![CDATA[ZappySys]]></dc:creator>
		<pubDate>Thu, 26 May 2016 17:15:38 +0000</pubDate>
				<category><![CDATA[SSIS REST API Task]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[fiddler]]></category>
		<category><![CDATA[ssis]]></category>
		<category><![CDATA[SSIS PowerPack]]></category>
		<category><![CDATA[ssis rest api task]]></category>
		<guid isPermaLink="false">http://zappysys.com/blog/?p=537</guid>

					<description><![CDATA[<p>Introduction In some cases when you call API to http URL it may redirect you to different location (Also known as 301 or 302 redirect). Best example is when you type https://www.zappysys.com it will redirect you to https://zappysys.com. This can cause issue in some case if you are passing credentials (i.e. UserID / Password) because [&#8230;]</p>
<p>The post <a href="https://zappysys.com/blog/pass-authorization-header-redirected-location/">Calling Web API in SSIS with Authorization and Redirect</a> appeared first on <a href="https://zappysys.com/blog">ZappySys Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Introduction</h2>
<p>In some cases when you call API to http URL it may redirect you to different location (Also known as 301 or 302 redirect). Best example is when you type https://www.zappysys.com it will redirect you to https://zappysys.com. This can cause issue in some case if you are passing credentials (i.e. UserID / Password) because by default your credentials are not passed to redirected URL (This is security feature to avoid sending your credentials to different URL than you anticipated). So how to send Authorization to second URL if second URL expects same credentials too? Well not to worry&#8230; it&#8217;s just one extra step in that case. Lets see how to do that.</p>
<h2>Pass Authorization to 301 / 302 Redirect URL</h2>
<p>Assume that you have to call below API URL which requires <a href="https://zappysys.com/blog/how-to-set-base64-encoded-authorization-header-for-http-web-request/" target="_blank" rel="noopener">Basic Authentication (UserID/Password)</a> and it also redirects to some other URL which also needs same credentials. For this purpose we need to mainly perform below important changes.</p><pre class="crayon-plain-tag">http://httpbin.org/redirect-to?url=http%3A%2F%2Fexample.com%2F</pre><p>
<ol>
<li>First drag <a href="https://zappysys.com/products/ssis-powerpack/ssis-rest-api-web-service-task/" target="_blank" rel="noopener">ZS REST API Task</a> from SSIS Control Flow Toolbox</li>
<li>Change Url mode to URL from connection. Click New Connection.</li>
<li>Configure your connection with API Url, UrserID and Password as below. Click OK to save connection.
<div id="attachment_2340" style="width: 907px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2016/05/ssis-rest-api-call-301-302-redirect-example.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-2340" class="size-full wp-image-2340" src="https://zappysys.com/blog/wp-content/uploads/2016/05/ssis-rest-api-call-301-302-redirect-example.png" alt="SSIS REST API Example - Call with 301 / 302 Redirect " width="897" height="713" srcset="https://zappysys.com/blog/wp-content/uploads/2016/05/ssis-rest-api-call-301-302-redirect-example.png 897w, https://zappysys.com/blog/wp-content/uploads/2016/05/ssis-rest-api-call-301-302-redirect-example-300x238.png 300w, https://zappysys.com/blog/wp-content/uploads/2016/05/ssis-rest-api-call-301-302-redirect-example-768x610.png 768w" sizes="(max-width: 897px) 100vw, 897px" /></a><p id="caption-attachment-2340" class="wp-caption-text">SSIS REST API Example &#8211; Call with 301 / 302 Redirect</p></div></li>
<li>Now go to Advanced Tab and Check Prevent 301 redirect option
<div id="attachment_2341" style="width: 544px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2016/05/ssis-rest-api-call-prevent-301-302-redirect.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-2341" class="size-full wp-image-2341" src="https://zappysys.com/blog/wp-content/uploads/2016/05/ssis-rest-api-call-prevent-301-302-redirect.png" alt="SSIS REST API Task - Disable automatic redirect option" width="534" height="373" srcset="https://zappysys.com/blog/wp-content/uploads/2016/05/ssis-rest-api-call-prevent-301-302-redirect.png 534w, https://zappysys.com/blog/wp-content/uploads/2016/05/ssis-rest-api-call-prevent-301-302-redirect-300x210.png 300w" sizes="(max-width: 534px) 100vw, 534px" /></a><p id="caption-attachment-2341" class="wp-caption-text">SSIS REST API Task &#8211; Disable automatic redirect option</p></div></li>
<li>Now go to Response Settings Tab and Map Location Header as below (Assuming you have created SSIS Variable named NewLocation (string type) )
<div id="attachment_2342" style="width: 785px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2016/05/ssis-api-call-save-response-header-capture-redirect-location-example.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-2342" class="size-full wp-image-2342" src="https://zappysys.com/blog/wp-content/uploads/2016/05/ssis-api-call-save-response-header-capture-redirect-location-example.png" alt="SSIS REST API Task - Map response header to SSIS Variable" width="775" height="711" srcset="https://zappysys.com/blog/wp-content/uploads/2016/05/ssis-api-call-save-response-header-capture-redirect-location-example.png 775w, https://zappysys.com/blog/wp-content/uploads/2016/05/ssis-api-call-save-response-header-capture-redirect-location-example-300x275.png 300w, https://zappysys.com/blog/wp-content/uploads/2016/05/ssis-api-call-save-response-header-capture-redirect-location-example-768x705.png 768w" sizes="(max-width: 775px) 100vw, 775px" /></a><p id="caption-attachment-2342" class="wp-caption-text">SSIS REST API Task &#8211; Map response header to SSIS Variable</p></div></li>
<li>Click OK to save.</li>
</ol>
<h2>Call API URL from URL</h2>
<ol>
<li>Now drag another <a href="https://zappysys.com/products/ssis-powerpack/ssis-rest-api-web-service-task/" target="_blank" rel="noopener">ZS REST API Task</a> from SSIS Control Flow Toolbox</li>
<li>Change Url mode to URL from connection. Select connection created in previous section.</li>
<li>Now configure your Url as below so we read it from Variable.
<div id="attachment_2343" style="width: 981px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2016/05/ssis-rest-api-call-url-from-variable-pass-userid-password.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-2343" class="size-full wp-image-2343" src="https://zappysys.com/blog/wp-content/uploads/2016/05/ssis-rest-api-call-url-from-variable-pass-userid-password.png" alt="SSIS REST API Task - Calling API URL from SSIS Variable " width="971" height="700" srcset="https://zappysys.com/blog/wp-content/uploads/2016/05/ssis-rest-api-call-url-from-variable-pass-userid-password.png 971w, https://zappysys.com/blog/wp-content/uploads/2016/05/ssis-rest-api-call-url-from-variable-pass-userid-password-300x216.png 300w, https://zappysys.com/blog/wp-content/uploads/2016/05/ssis-rest-api-call-url-from-variable-pass-userid-password-768x554.png 768w" sizes="(max-width: 971px) 100vw, 971px" /></a><p id="caption-attachment-2343" class="wp-caption-text">SSIS REST API Task &#8211; Calling API URL from SSIS Variable</p></div></li>
<li>That&#8217;s it Save the task and run package.</li>
</ol>
<h2>Debug Web API call using Fiddler</h2>
<p>To test how things looking behind the scene we strongly suggest to use <a href="https://zappysys.com/blog/how-to-use-fiddler-to-analyze-http-web-requests/" target="_blank" rel="noopener">tool like  fiddler</a>.</p>
<p>See how Fiddler shows 302 Status code for First API call and see how it passes Authorization (UserID/Password). You can also test Just first task without [Prevent 301/302 redirect] option see what happens]
<div id="attachment_2344" style="width: 1297px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2016/05/ssis-rest-api-call-debug-via-fiddler.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-2344" class="size-full wp-image-2344" src="https://zappysys.com/blog/wp-content/uploads/2016/05/ssis-rest-api-call-debug-via-fiddler.png" alt="Debugging Web API call using Fiddler in SSIS" width="1287" height="564" srcset="https://zappysys.com/blog/wp-content/uploads/2016/05/ssis-rest-api-call-debug-via-fiddler.png 1287w, https://zappysys.com/blog/wp-content/uploads/2016/05/ssis-rest-api-call-debug-via-fiddler-300x131.png 300w, https://zappysys.com/blog/wp-content/uploads/2016/05/ssis-rest-api-call-debug-via-fiddler-768x337.png 768w, https://zappysys.com/blog/wp-content/uploads/2016/05/ssis-rest-api-call-debug-via-fiddler-1024x449.png 1024w" sizes="(max-width: 1287px) 100vw, 1287px" /></a><p id="caption-attachment-2344" class="wp-caption-text">Debugging Web API call using Fiddler in SSIS</p></div>
<p>&nbsp;</p>
<p>The post <a href="https://zappysys.com/blog/pass-authorization-header-redirected-location/">Calling Web API in SSIS with Authorization and Redirect</a> appeared first on <a href="https://zappysys.com/blog">ZappySys Blog</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Calling REST API in SSIS with Basic Authentication / Userid-Password (BASE64 Authorization header)</title>
		<link>https://zappysys.com/blog/how-to-set-base64-encoded-authorization-header-for-http-web-request/</link>
		
		<dc:creator><![CDATA[ZappySys]]></dc:creator>
		<pubDate>Thu, 27 Aug 2015 20:58:17 +0000</pubDate>
				<category><![CDATA[SSIS Components]]></category>
		<category><![CDATA[SSIS JSON Source (File/REST)]]></category>
		<category><![CDATA[base64]]></category>
		<category><![CDATA[fiddler]]></category>
		<category><![CDATA[json]]></category>
		<category><![CDATA[rest api]]></category>
		<category><![CDATA[ssis]]></category>
		<category><![CDATA[ssis http connection]]></category>
		<category><![CDATA[ssis json source]]></category>
		<category><![CDATA[SSIS PowerPack]]></category>
		<category><![CDATA[ssis rest api task]]></category>
		<category><![CDATA[ssis xml source]]></category>
		<guid isPermaLink="false">http://zappysys.com/blog/?p=34</guid>

					<description><![CDATA[<p>Introduction In this blog post you will explain how to pass basic credentials (i.e. UserID/Password) along with your web request. You will also learn about setting up Authorization Header for HTTP Web Request in Base64 manually. To learn more about how to consume / call REST API in SSIS check this article. HTTP Authorization Header [&#8230;]</p>
<p>The post <a href="https://zappysys.com/blog/how-to-set-base64-encoded-authorization-header-for-http-web-request/">Calling REST API in SSIS with Basic Authentication / Userid-Password (BASE64 Authorization header)</a> appeared first on <a href="https://zappysys.com/blog">ZappySys Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Introduction</h2>
<p>In this blog post you will explain how to pass basic credentials (i.e. UserID/Password) along with your web request. You will also learn about setting up Authorization Header for HTTP Web Request in Base64 manually. To learn more about <a href="//zappysys.com/blog/call-rest-api-using-ssis-web-service-task/" target="_blank" rel="noopener">how to consume / call REST API in SSIS check this article</a>.</p>
<h2>HTTP Authorization Header basics</h2>
<p>As per HTTP Standard you can pass credentials very simple way using basic Authorization header. Below is the sample of Basic Authorization header.</p>
<p>As you can see it consist of HeaderName=Authorization and Value=some <em>base64 encoded string</em><br />
<code>Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==</code><br />
As per standard Base64 encoded string is made up with two elements. <em>your_userid:your_password</em></p>
<blockquote><p><strong>NOTE:</strong> Base64 is encoding and not encryption method. So never hand over your encoded Authorization header string to anyone. Anyone can decode Base64 encoded string easily by using tools <a href="http://www.bing.com/search?q=base64+encode&amp;src=IE-TopResult&amp;FORM=IE11TR&amp;conversationid=" target="_blank" rel="noopener">like this</a></p></blockquote>
<h2>Passing Basic Credentials along with HTTP Web Request</h2>
<p>You can pass credentials (i.e. UserID/Password) in two different ways.</p>
<ol>
<li>Automatic approach &#8211; Using <a href="//zappysys.com/onlinehelp/ssis-powerpack/scr/ssis-http-connection-manager.htm" target="_blank" rel="noopener">ZS-HTTP Connection Manager</a> (BASE64 Encoded Header automatically generated)</li>
<li>Manual approach &#8211; Supplying Authorization where UserID/Password encoded as Base64</li>
</ol>
<h3>Automatic approach &#8211; Using ZS-HTTP Connection Manager</h3>
<p>Now lets look at how to use automatic approach to pass Basic Authorization in following 3 different tasks/components</p>
<ol>
<li>Passing basic credentials in <a href="//zappysys.com/products/ssis-powerpack/ssis-rest-api-web-service-task/" target="_blank" rel="noopener">SSIS REST API Task</a></li>
<li>Passing basic credentials in <a href="//zappysys.com/products/ssis-powerpack/ssis-json-file-source/" target="_blank" rel="noopener">SSIS JSON Source</a></li>
<li>Passing basic credentials in <a href="//zappysys.com/products/ssis-powerpack/ssis-xml-source/" target="_blank" rel="noopener">SSIS XML Source</a></li>
</ol>
<h4>Using SSIS REST API Task (Pass Basic credentials using Connection Manager)</h4>
<p>The simplest way to pass credentials is use HTTP Connection Manager. If you are using <a href="//zappysys.com/products/ssis-powerpack/ssis-rest-api-web-service-task/" target="_blank" rel="noopener">REST API Task</a> then you can use <strong>Url from Connection</strong> Access Mode. And on connection manager specify UserId and password to pass Basic <strong>Authorization Header </strong></p>
<p>Advantages of this method are..<br />
1) Its very simple<br />
2) Credentials are encrypted in SSIS Package</p>
<blockquote><p><strong>NOTE:</strong> We recommend using <strong>https</strong>:// Urls whenever possible otherwise your web request can be decoded in plain text by any servers sitting between you and target and possibly they can get your password by decoding base64 header.</p></blockquote>
<div><img decoding="async" class="figureimage" title="SSIS REST API Task - Pass Base64 Encoded HTTP Authorization Header" src="https://zappysys.com/blog/wp-content/uploads/2015/08/how-to-set-base64-encoded-authorization-header-for-http-web-request-1.png" alt="SSIS REST API Task - Pass Base64 Encoded HTTP Authorization Header" /></div>
<div></div>
<div><strong>Analyze Base64 Encoded HTTP Authorization Header generated by HTTP Connection Manager</strong></div>
<div>You can analyze Webrequest in some 3rd party Free Debugging tools such as Fiddler (<a href="https://zappysys.com/blog/how-to-use-fiddler-to-analyze-http-web-requests/" target="_blank" rel="noopener">Check this article</a>). As you see how its sending Authorization header in Base64 encoded string.</div>
<div></div>
<div><img decoding="async" class="figureimage" title="Base64 Encoded HTTP Basic Authorization Header View in Fiddler" src="https://zappysys.com/blog/wp-content/uploads/2015/08/how-to-set-base64-encoded-authorization-header-for-http-web-request-2.png" alt="Base64 Encoded HTTP Basic Authorization Header View in Fiddler" /><br />
Base64 Encoded HTTP Basic Authorization Header &#8211; View in Fiddler</div>
<h4>Using SSIS JSON/XML Source  (Pass Basic credentials using Connection Manager)</h4>
<p>You can use HTTP Connection manager in <a href="//zappysys.com/products/ssis-powerpack/ssis-json-file-source/" target="_blank" rel="noopener">JSON Source</a> and <a href="//zappysys.com/products/ssis-powerpack/ssis-xml-source/" target="_blank" rel="noopener">XML Source</a> too. Only difference is you have to check Use Credentials checkbox and select HTTP connection manager from available connection managers dropdown.</p>
<ol>
<li>Select AccessMode as &#8220;File Path or Web URL&#8221;</li>
<li>Enter API URL</li>
<li>Check &#8220;Use Credentials&#8221; option</li>
<li>Click &#8220;New&#8221; next to Connection dropdown or select New &#8220;ZS-HTTP&#8221; connection from dropdown</li>
<li>Configure HTTP Connection as below (i.e. Enter URL, Select Basic Auth, Enter UserID, Password)</li>
<li>Clock OK on HTTP connection manager UI to save and now Test JSON or XML Source UI by clicking Preview (Assuming no other configuration needed)</li>
</ol>
<div id="attachment_1676" style="width: 972px" class="wp-caption alignnone"><a href="//zappysys.com/blog/wp-content/uploads/2015/08/ssis-json-source-rest-api-http-basic-authentication-pass-userid-password.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-1676" class="size-full wp-image-1676" src="https://zappysys.com/blog/wp-content/uploads/2015/08/how-to-set-base64-encoded-authorization-header-for-http-web-request-3.png" alt="SSIS JSON Source - Passing Basic Credentials (Supply UserID / Password) using HTTP Connection" width="962" height="757" /></a><p id="caption-attachment-1676" class="wp-caption-text">SSIS JSON Source &#8211; Passing Basic Credentials (Supply UserID / Password) using HTTP Connection</p></div>
<h3>Manual approach &#8211; Supplying Authorization where UserID/Password encoded as Base64</h3>
<p>Our <a href="//zappysys.com/products/ssis-powerpack/ssis-json-file-source/" target="_blank" rel="noopener">JSON Source</a>, <a href="//zappysys.com/products/ssis-powerpack/ssis-xml-source/" target="_blank" rel="noopener">XML Source</a> and <a href="//zappysys.com/products/ssis-powerpack/ssis-rest-api-web-service-task/" target="_blank" rel="noopener">REST API Task </a> they all support passing BASE64 Encoded String for Authorization header (see below screenshot). Setting up userid and password in HTTP Connection Manger would do same trick as setting up it manually.</p>
<p>To encode any Header value in BASE64 format you simply have to add BASE64ENC format specifier after variable name.</p>
<p>Example: {{User::varUserAndPassword<strong>,BASE64ENC</strong>}}</p>
<p>&nbsp;</p>
<div><img decoding="async" class="figureimage" title="SSIS JSON Source Task - Pass Base64 Encoded HTTP Authorization Header" src="https://zappysys.com/blog/wp-content/uploads/2015/08/how-to-set-base64-encoded-authorization-header-for-http-web-request-4.png" alt="SSIS JSON Source Task - Pass Base64 Encoded HTTP Authorization Header" /><br />
SSIS JSON Source Task &#8211; Pass Base64 Encoded HTTP Authorization Header</div>
<div><img decoding="async" class="figureimage" title="Base64 Encoded HTTP Basic Authorization Header View in Fiddler" src="https://zappysys.com/blog/wp-content/uploads/2015/08/how-to-set-base64-encoded-authorization-header-for-http-web-request-5.png" alt="Base64 Encoded HTTP Basic Authorization Header View in Fiddler" /></div>
<h2>Reference</h2>
<p>Wikipedia Article &#8211; <a href="https://en.wikipedia.org/wiki/Basic_access_authentication" target="_blank" rel="noopener">HTTP Basic Authorization Header</a></p>
<h2>Download FREE SSIS Components</h2>
<p><a href="https://zappysys.com/products/ssis-powerpack/"><img decoding="async" src="//zappysys.com/wp-content/uploads/2016/10/slider-ssis-powerpack-1.png" /></a></p>
<p>The post <a href="https://zappysys.com/blog/how-to-set-base64-encoded-authorization-header-for-http-web-request/">Calling REST API in SSIS with Basic Authentication / Userid-Password (BASE64 Authorization header)</a> appeared first on <a href="https://zappysys.com/blog">ZappySys Blog</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
