<?xml version="1.0" encoding="ISO-8859-1"?>

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
	<channel>
		<title><![CDATA[Forum du club des développeurs et IT Pro - Web & réseau]]></title>
		<link>https://www.developpez.net/forums/</link>
		<description>Développement web et programmation réseau avec Delphi</description>
		<language>fr</language>
		<lastBuildDate>Mon, 07 Sep 2026 09:56:36 GMT</lastBuildDate>
		<generator>vBulletin</generator>
		<ttl>15</ttl>
		<image>
			<url>https://forum.developpez.be/images/misc/rss.png</url>
			<title><![CDATA[Forum du club des développeurs et IT Pro - Web & réseau]]></title>
			<link>https://www.developpez.net/forums/</link>
		</image>
		<item>
			<title>Datasnap vs openssl v3</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2185260&amp;goto=newpost</link>
			<pubDate>Fri, 21 Aug 2026 15:28:13 GMT</pubDate>
			<description>Bonjour 
 
je suis avec...</description>
			<content:encoded><![CDATA[<div>Bonjour<br />
<br />
je suis avec Delphi 13.1 <br />
j'utilise datasnap pour les échanges client serveur avec les filtres de chiffrement pc1 et rsa<br />
j'utilise les dll ssleay32.dll et libeay32.dll pour la partie openssl mais elles sont un poil vieillottes<br />
il n'y a pas moyen d'utiliser les dernières dll openssl en v3.5.7 par exemple, il existe la v4</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f779/environnements-developpement/delphi/web-reseau/"><![CDATA[Web & réseau]]></category>
			<dc:creator>fbalien</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2185260/environnements-developpement/delphi/web-reseau/datasnap-vs-openssl-v3/</guid>
		</item>
		<item>
			<title>Delphi appel API ne fonctionne pas Sous Delphi, peut être faut il utiliser TOAuth1Authenticator</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2184223&amp;goto=newpost</link>
			<pubDate>Mon, 15 Jun 2026 08:03:00 GMT</pubDate>
			<description>Bonjour, je rencontre de...</description>
			<content:encoded><![CDATA[<div>Bonjour, je rencontre de nouveau un souci avec une API<br />
le fournisseur me donne une Clé et secret ID<br />
je calcule un HASH ensuite que je mets en base 64<br />
je crée ensuite un autorizationHeader<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code">authorizationHeader := <span style="color: #FF0000;">'GCS v1HMAC:'</span> + apiKey + <span style="color: #FF0000;">':'</span> + hmacSignature;</code><hr />
</div>que je mets ainsi dans ma requête<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br /></div></td><td valign="top"><pre style="margin: 0">Headers<span class="br0">&#91;</span><span style="color: #cc66cc;">0</span><span class="br0">&#93;</span> := TNameValuePair.Create<span class="br0">&#40;</span><span style="color: #FF0000;">'Authorization'</span>, authorizationHeader<span class="br0">&#41;</span>;
Headers<span class="br0">&#91;</span><span style="color: #cc66cc;">1</span><span class="br0">&#93;</span> := TNameValuePair.Create<span class="br0">&#40;</span><span style="color: #FF0000;">'Date'</span>, dateRFC1123<span class="br0">&#41;</span>;
Headers<span class="br0">&#91;</span><span style="color: #cc66cc;">2</span><span class="br0">&#93;</span> := TNameValuePair.Create<span class="br0">&#40;</span><span style="color: #FF0000;">'Content-Type'</span>, contentType<span class="br0">&#41;</span>;
Headers<span class="br0">&#91;</span><span style="color: #cc66cc;">3</span><span class="br0">&#93;</span> := TNameValuePair.Create<span class="br0">&#40;</span><span style="color: #FF0000;">'Accept'</span>, <span style="color: #FF0000;">'application/json'</span><span class="br0">&#41;</span>;</pre></td></tr></table></code><hr />
</div>en faisant ça j'ai systématiquement une erreur 403<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Citation:</div>
	<div class="bbcode_quote printable">
		<hr />
		
			[18:08:12] Response Content:<br />
[18:08:12] {<br />
&quot;errorId&quot;: &quot;cd56e7ef-9d2a-4dbf-901b-f12868521003&quot;,<br />
&quot;errors&quot;: [<br />
{<br />
&quot;code&quot;: &quot;9007&quot;,<br />
&quot;id&quot;: &quot;ACCESS_TO_MERCHANT_NOT_ALLOWED&quot;,<br />
&quot;category&quot;: &quot;DIRECT_PLATFORM_ERROR&quot;,<br />
&quot;message&quot;: &quot;ACCESS_TO_MERCHANT_NOT_ALLOWED&quot;,<br />
&quot;httpStatusCode&quot;: 403<br />
}<br />
],<br />
&quot;status&quot;: 403<br />
}<br />
[18:08:12]<br />
[18:08:12] ERROR 403: ACCESS_TO_MERCHANT_NOT_ALLOWED.<br />
[18:08:12] Check merchant access, API key permissions, and IP whitelist.<br />
[18:08:12]<br />
[18:08:12] === Payment Links API Test Completed ===
			
		<hr />
	</div>
</div>Je me demande s'il ne faut pas utiliser<br />
TOAuth1Authenticator mais je ne sais pas comment le paramétrer ici, si quelqu'un a une idée, je mets le code complet de la procédure ci dessous.<br />
<br />
Merci d'avance pour toute aide.<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="40"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br />56<br />57<br />58<br />59<br />60<br />61<br />62<br />63<br />64<br />65<br />66<br />67<br />68<br />69<br />70<br />71<br />72<br />73<br />74<br />75<br />76<br />77<br />78<br />79<br />80<br />81<br />82<br />83<br />84<br />85<br />86<br />87<br />88<br />89<br />90<br />91<br />92<br />93<br />94<br />95<br />96<br />97<br />98<br />99<br />100<br />101<br />102<br />103<br />104<br />105<br />106<br />107<br />108<br />109<br />110<br />111<br />112<br />113<br />114<br />115<br />116<br />117<br />118<br />119<br />120<br />121<br />122<br />123<br />124<br />125<br />126<br />127<br />128<br />129<br />130<br />131<br />132<br />133<br />134<br />135<br />136<br />137<br />138<br />139<br />140<br />141<br />142<br />143<br />144<br />145<br />146<br />147<br />148<br />149<br />150<br />151<br />152<br />153<br />154<br />155<br />156<br />157<br />158<br />159<br />160<br />161<br />162<br />163<br />164<br />165<br />166<br />167<br />168<br />169<br />170<br />171<br />172<br />173<br />174<br />175<br />176<br />177<br />178<br />179<br />180<br />181<br />182<br />183<br />184<br />185<br />186<br />187<br />188<br />189<br />190<br />191<br />192<br />193<br />194<br />195<br />196<br />197<br />198<br />199<br />200<br />201<br />202<br />203<br />204<br />205<br />206<br />207<br />208<br />209<br />210<br />211<br />212<br />213<br />214<br />215<br />216<br />217<br />218<br />219<br />220<br />221<br />222<br />223<br />224<br />225<br />226<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #0000ff;">procedure</span> TPaymentLinksTestForm.CreatePaymentLink;
<span style="color: #0000ff;">var</span>
HTTPClient: THTTPClient;
RequestBodyStream: TStringStream;
Response: IHTTPResponse;
Headers: TNetHeaders;
&nbsp;
pspid: <span style="color: #0080ff;">string</span>;
apiKey: <span style="color: #0080ff;">string</span>;
secretKey: <span style="color: #0080ff;">string</span>;
&nbsp;
requestMethod: <span style="color: #0080ff;">string</span>;
contentType: <span style="color: #0080ff;">string</span>;
baseURL: <span style="color: #0080ff;">string</span>;
resourcePath: <span style="color: #0080ff;">string</span>;
fullURL: <span style="color: #0080ff;">string</span>;
&nbsp;
dateRFC1123: <span style="color: #0080ff;">string</span>;
stringToHash: <span style="color: #0080ff;">string</span>;
hmacSignature: <span style="color: #0080ff;">string</span>;
authorizationHeader: <span style="color: #0080ff;">string</span>;
&nbsp;
jsonBody: <span style="color: #0080ff;">string</span>;
responseContent: <span style="color: #0080ff;">string</span>;
<span style="color: #0000ff;">begin</span>
<span style="color: #0000ff;">try</span>
LogMessage<span class="br0">&#40;</span><span style="color: #FF0000;">'=== Payment Links API Test Started ==='</span><span class="br0">&#41;</span>;
&nbsp;
<span style="color: #808080;">// =========================================================</span>
<span style="color: #808080;">// CONFIGURATION</span>
<span style="color: #808080;">// =========================================================</span>
pspid := <span style="color: #FF0000;">'PRINTEMPS4'</span>;
&nbsp;
<span style="color: #808080;">// Replace these values with the real API key and secret.</span>
<span style="color: #808080;">// Important: if the previous secret was shared externally, rotate it.</span>
apiKey := <span style="color: #FF0000;">'YOUR_API_KEY_HERE'</span>;
secretKey := <span style="color: #FF0000;">'YOUR_SECRET_KEY_HERE'</span>;
&nbsp;
requestMethod := <span style="color: #FF0000;">'POST'</span>;
contentType := <span style="color: #FF0000;">'application/json'</span>;
&nbsp;
baseURL := <span style="color: #FF0000;">'https://payment.preprod.direct.worldline-solutions.com'</span>;
&nbsp;
<span style="color: #808080;">// This path is used BOTH for the URL and for the HMAC string.</span>
<span style="color: #808080;">// For the HMAC, it must be the path only, not the full URL.</span>
resourcePath := <span style="color: #FF0000;">'/v2/'</span> + pspid + <span style="color: #FF0000;">'/paymentlinks'</span>;
&nbsp;
fullURL := baseURL + resourcePath;
&nbsp;
LogMessage<span class="br0">&#40;</span><span style="color: #FF0000;">'PSPID: '</span> + pspid<span class="br0">&#41;</span>;
LogMessage<span class="br0">&#40;</span><span style="color: #FF0000;">'Request Method: '</span> + requestMethod<span class="br0">&#41;</span>;
LogMessage<span class="br0">&#40;</span><span style="color: #FF0000;">'Content-Type: '</span> + contentType<span class="br0">&#41;</span>;
LogMessage<span class="br0">&#40;</span><span style="color: #FF0000;">'Base URL: '</span> + baseURL<span class="br0">&#41;</span>;
LogMessage<span class="br0">&#40;</span><span style="color: #FF0000;">'Resource Path: '</span> + resourcePath<span class="br0">&#41;</span>;
LogMessage<span class="br0">&#40;</span><span style="color: #FF0000;">'Full URL: '</span> + fullURL<span class="br0">&#41;</span>;
LogMessage<span class="br0">&#40;</span><span style="color: #FF0000;">''</span><span class="br0">&#41;</span>;
&nbsp;
<span style="color: #808080;">// =========================================================</span>
<span style="color: #808080;">// DATE HEADER</span>
<span style="color: #808080;">// =========================================================</span>
dateRFC1123 := GetRFC1123DateTime;
&nbsp;
LogMessage<span class="br0">&#40;</span><span style="color: #FF0000;">'Date header: '</span> + dateRFC1123<span class="br0">&#41;</span>;
LogMessage<span class="br0">&#40;</span><span style="color: #FF0000;">''</span><span class="br0">&#41;</span>;
&nbsp;
<span style="color: #808080;">// =========================================================</span>
<span style="color: #808080;">// HMAC SIGNATURE</span>
<span style="color: #808080;">// =========================================================</span>
<span style="color: #808080;">// Worldline HMAC string format:</span>
<span style="color: #808080;">//</span>
<span style="color: #808080;">// POST</span>
<span style="color: #808080;">// application/json</span>
<span style="color: #808080;">// Tue, 10 Jun 2026 12:34:56 GMT</span>
<span style="color: #808080;">// /v2/PRINTEMPS4/paymentlinks</span>
<span style="color: #808080;">//</span>
<span style="color: #808080;">// Use LF only: #10</span>
<span style="color: #808080;">// Do not use CRLF: #13#10</span>
<span style="color: #808080;">// Do not add the full host.</span>
<span style="color: #808080;">// Do not add an extra blank line unless the API documentation requires</span>
<span style="color: #808080;">// signed x-gcs headers.</span>
stringToHash :=
requestMethod + <span style="color: #cc66cc;">#10</span> +
contentType + <span style="color: #cc66cc;">#10</span> +
dateRFC1123 + <span style="color: #cc66cc;">#10</span> +
resourcePath;
&nbsp;
LogMessage<span class="br0">&#40;</span><span style="color: #FF0000;">'String To Hash:'</span><span class="br0">&#41;</span>;
LogMessage<span class="br0">&#40;</span>StringReplace<span class="br0">&#40;</span>stringToHash, <span style="color: #cc66cc;">#10</span>, <span style="color: #FF0000;">'\n'</span>, <span class="br0">&#91;</span>rfReplaceAll<span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;
LogMessage<span class="br0">&#40;</span><span style="color: #FF0000;">''</span><span class="br0">&#41;</span>;
&nbsp;
hmacSignature := ComputeHMACSHA256<span class="br0">&#40;</span>stringToHash, secretKey<span class="br0">&#41;</span>;
&nbsp;
authorizationHeader := <span style="color: #FF0000;">'GCS v1HMAC:'</span> + apiKey + <span style="color: #FF0000;">':'</span> + hmacSignature;
&nbsp;
LogMessage<span class="br0">&#40;</span><span style="color: #FF0000;">'HMAC Signature: '</span> + hmacSignature<span class="br0">&#41;</span>;
LogMessage<span class="br0">&#40;</span><span style="color: #FF0000;">'Authorization Header: GCS v1HMAC:'</span> + apiKey + <span style="color: #FF0000;">':&lt;signature hidden&gt;'</span><span class="br0">&#41;</span>;
LogMessage<span class="br0">&#40;</span><span style="color: #FF0000;">''</span><span class="br0">&#41;</span>;
&nbsp;
<span style="color: #808080;">// =========================================================</span>
<span style="color: #808080;">// JSON BODY</span>
<span style="color: #808080;">// =========================================================</span>
jsonBody :=
<span style="color: #FF0000;">'{'</span> + <span style="color: #cc66cc;">#13</span><span style="color: #cc66cc;">#10</span> +
<span style="color: #FF0000;">' &quot;expirationDate&quot;: &quot;2026-08-01T14:15:22Z&quot;,'</span> + <span style="color: #cc66cc;">#13</span><span style="color: #cc66cc;">#10</span> +
<span style="color: #FF0000;">' &quot;description&quot;: &quot;TEST Payment Link - '</span> + FormatDateTime<span class="br0">&#40;</span><span style="color: #FF0000;">'yyyymmdd hhnn'</span>, Now<span class="br0">&#41;</span> + <span style="color: #FF0000;">'&quot;,'</span> + <span style="color: #cc66cc;">#13</span><span style="color: #cc66cc;">#10</span> +
<span style="color: #FF0000;">' &quot;paymentLinkOrder&quot;: {'</span> + <span style="color: #cc66cc;">#13</span><span style="color: #cc66cc;">#10</span> +
<span style="color: #FF0000;">' &quot;merchantReference&quot;: &quot;PRINTEMPS4-'</span> + FormatDateTime<span class="br0">&#40;</span><span style="color: #FF0000;">'yyyymmddhhnnss'</span>, Now<span class="br0">&#41;</span> + <span style="color: #FF0000;">'&quot;,'</span> + <span style="color: #cc66cc;">#13</span><span style="color: #cc66cc;">#10</span> +
<span style="color: #FF0000;">' &quot;amount&quot;: {'</span> + <span style="color: #cc66cc;">#13</span><span style="color: #cc66cc;">#10</span> +
<span style="color: #FF0000;">' &quot;amount&quot;: 1000,'</span> + <span style="color: #cc66cc;">#13</span><span style="color: #cc66cc;">#10</span> +
<span style="color: #FF0000;">' &quot;currencyCode&quot;: &quot;EUR&quot;'</span> + <span style="color: #cc66cc;">#13</span><span style="color: #cc66cc;">#10</span> +
<span style="color: #FF0000;">' }'</span> + <span style="color: #cc66cc;">#13</span><span style="color: #cc66cc;">#10</span> +
<span style="color: #FF0000;">' },'</span> + <span style="color: #cc66cc;">#13</span><span style="color: #cc66cc;">#10</span> +
<span style="color: #FF0000;">' &quot;recipientName&quot;: &quot;Jean Bon&quot;,'</span> + <span style="color: #cc66cc;">#13</span><span style="color: #cc66cc;">#10</span> +
<span style="color: #FF0000;">' &quot;merchantReference&quot;: &quot;your-order-'</span> + FormatDateTime<span class="br0">&#40;</span><span style="color: #FF0000;">'yyyymmddhhnnss'</span>, Now<span class="br0">&#41;</span> + <span style="color: #FF0000;">'&quot;'</span> + <span style="color: #cc66cc;">#13</span><span style="color: #cc66cc;">#10</span> +
<span style="color: #FF0000;">'}'</span>;
&nbsp;
LogMessage<span class="br0">&#40;</span><span style="color: #FF0000;">'JSON Body:'</span><span class="br0">&#41;</span>;
LogMessage<span class="br0">&#40;</span>jsonBody<span class="br0">&#41;</span>;
LogMessage<span class="br0">&#40;</span><span style="color: #FF0000;">''</span><span class="br0">&#41;</span>;
&nbsp;
<span style="color: #808080;">// =========================================================</span>
<span style="color: #808080;">// HTTP HEADERS</span>
<span style="color: #808080;">// =========================================================</span>
SetLength<span class="br0">&#40;</span>Headers, <span style="color: #cc66cc;">4</span><span class="br0">&#41;</span>;
&nbsp;
Headers<span class="br0">&#91;</span><span style="color: #cc66cc;">0</span><span class="br0">&#93;</span> := TNameValuePair.Create<span class="br0">&#40;</span><span style="color: #FF0000;">'Authorization'</span>, authorizationHeader<span class="br0">&#41;</span>;
Headers<span class="br0">&#91;</span><span style="color: #cc66cc;">1</span><span class="br0">&#93;</span> := TNameValuePair.Create<span class="br0">&#40;</span><span style="color: #FF0000;">'Date'</span>, dateRFC1123<span class="br0">&#41;</span>;
Headers<span class="br0">&#91;</span><span style="color: #cc66cc;">2</span><span class="br0">&#93;</span> := TNameValuePair.Create<span class="br0">&#40;</span><span style="color: #FF0000;">'Content-Type'</span>, contentType<span class="br0">&#41;</span>;
Headers<span class="br0">&#91;</span><span style="color: #cc66cc;">3</span><span class="br0">&#93;</span> := TNameValuePair.Create<span class="br0">&#40;</span><span style="color: #FF0000;">'Accept'</span>, <span style="color: #FF0000;">'application/json'</span><span class="br0">&#41;</span>;
&nbsp;
LogMessage<span class="br0">&#40;</span><span style="color: #FF0000;">'Headers:'</span><span class="br0">&#41;</span>;
LogMessage<span class="br0">&#40;</span><span style="color: #FF0000;">' Authorization: GCS v1HMAC:'</span> + apiKey + <span style="color: #FF0000;">':&lt;signature hidden&gt;'</span><span class="br0">&#41;</span>;
LogMessage<span class="br0">&#40;</span><span style="color: #FF0000;">' Date: '</span> + dateRFC1123<span class="br0">&#41;</span>;
LogMessage<span class="br0">&#40;</span><span style="color: #FF0000;">' Content-Type: '</span> + contentType<span class="br0">&#41;</span>;
LogMessage<span class="br0">&#40;</span><span style="color: #FF0000;">' Accept: application/json'</span><span class="br0">&#41;</span>;
LogMessage<span class="br0">&#40;</span><span style="color: #FF0000;">''</span><span class="br0">&#41;</span>;
&nbsp;
<span style="color: #808080;">// =========================================================</span>
<span style="color: #808080;">// EXECUTE REQUEST</span>
<span style="color: #808080;">// =========================================================</span>
HTTPClient := THTTPClient.Create;
<span style="color: #0000ff;">try</span>
HTTPClient.ConnectionTimeout := <span style="color: #cc66cc;">30000</span>;
HTTPClient.ResponseTimeout := <span style="color: #cc66cc;">30000</span>;
HTTPClient.UserAgent := <span style="color: #FF0000;">'Delphi Payment Links Test'</span>;
&nbsp;
RequestBodyStream := TStringStream.Create<span class="br0">&#40;</span>jsonBody, TEncoding.UTF8<span class="br0">&#41;</span>;
<span style="color: #0000ff;">try</span>
RequestBodyStream.Position := <span style="color: #cc66cc;">0</span>;
&nbsp;
LogMessage<span class="br0">&#40;</span><span style="color: #FF0000;">'Executing POST request...'</span><span class="br0">&#41;</span>;
LogMessage<span class="br0">&#40;</span><span style="color: #FF0000;">''</span><span class="br0">&#41;</span>;
&nbsp;
Response := HTTPClient.Post<span class="br0">&#40;</span>
fullURL,
RequestBodyStream,
<span style="color: #0000ff;">nil</span>,
Headers
<span class="br0">&#41;</span>;
&nbsp;
LogMessage<span class="br0">&#40;</span><span style="color: #FF0000;">'=== RESPONSE ==='</span><span class="br0">&#41;</span>;
LogMessage<span class="br0">&#40;</span><span style="color: #FF0000;">'HTTP Status Code: '</span> + IntToStr<span class="br0">&#40;</span>Response.StatusCode<span class="br0">&#41;</span><span class="br0">&#41;</span>;
LogMessage<span class="br0">&#40;</span><span style="color: #FF0000;">'Status Text: '</span> + Response.StatusText<span class="br0">&#41;</span>;
LogMessage<span class="br0">&#40;</span><span style="color: #FF0000;">''</span><span class="br0">&#41;</span>;
&nbsp;
responseContent := Response.ContentAsString<span class="br0">&#40;</span>TEncoding.UTF8<span class="br0">&#41;</span>;
&nbsp;
LogMessage<span class="br0">&#40;</span><span style="color: #FF0000;">'Response Content:'</span><span class="br0">&#41;</span>;
LogMessage<span class="br0">&#40;</span>responseContent<span class="br0">&#41;</span>;
LogMessage<span class="br0">&#40;</span><span style="color: #FF0000;">''</span><span class="br0">&#41;</span>;
&nbsp;
<span style="color: #0000ff;">case</span> Response.StatusCode <span style="color: #0000ff;">of</span>
<span style="color: #cc66cc;">200</span>, <span style="color: #cc66cc;">201</span>:
<span style="color: #0000ff;">begin</span>
LogMessage<span class="br0">&#40;</span><span style="color: #FF0000;">'SUCCESS: Payment Link created.'</span><span class="br0">&#41;</span>;
<span style="color: #0000ff;">end</span>;
&nbsp;
<span style="color: #cc66cc;">400</span>:
<span style="color: #0000ff;">begin</span>
LogMessage<span class="br0">&#40;</span><span style="color: #FF0000;">'ERROR 400: Bad Request.'</span><span class="br0">&#41;</span>;
LogMessage<span class="br0">&#40;</span><span style="color: #FF0000;">'Check the JSON payload/schema.'</span><span class="br0">&#41;</span>;
<span style="color: #0000ff;">end</span>;
&nbsp;
<span style="color: #cc66cc;">401</span>:
<span style="color: #0000ff;">begin</span>
LogMessage<span class="br0">&#40;</span><span style="color: #FF0000;">'ERROR 401: Unauthorized.'</span><span class="br0">&#41;</span>;
LogMessage<span class="br0">&#40;</span><span style="color: #FF0000;">'Check API key, secret key, Date header, HMAC string, and Content-Type.'</span><span class="br0">&#41;</span>;
<span style="color: #0000ff;">end</span>;
&nbsp;
<span style="color: #cc66cc;">403</span>:
<span style="color: #0000ff;">begin</span>
LogMessage<span class="br0">&#40;</span><span style="color: #FF0000;">'ERROR 403: ACCESS_TO_MERCHANT_NOT_ALLOWED.'</span><span class="br0">&#41;</span>;
LogMessage<span class="br0">&#40;</span><span style="color: #FF0000;">'Check merchant access, API key permissions, and IP whitelist.'</span><span class="br0">&#41;</span>;
<span style="color: #0000ff;">end</span>;
&nbsp;
<span style="color: #cc66cc;">406</span>:
<span style="color: #0000ff;">begin</span>
LogMessage<span class="br0">&#40;</span><span style="color: #FF0000;">'ERROR 406: Not Acceptable.'</span><span class="br0">&#41;</span>;
LogMessage<span class="br0">&#40;</span><span style="color: #FF0000;">'Check the endpoint URL, Accept header, Content-Type header, and Payment Links API activation.'</span><span class="br0">&#41;</span>;
<span style="color: #0000ff;">end</span>;
&nbsp;
<span style="color: #0000ff;">else</span>
<span style="color: #0000ff;">begin</span>
LogMessage<span class="br0">&#40;</span><span style="color: #FF0000;">'ERROR: HTTP '</span> + IntToStr<span class="br0">&#40;</span>Response.StatusCode<span class="br0">&#41;</span><span class="br0">&#41;</span>;
<span style="color: #0000ff;">end</span>;
<span style="color: #0000ff;">end</span>;
&nbsp;
<span style="color: #0000ff;">finally</span>
RequestBodyStream.Free;
<span style="color: #0000ff;">end</span>;
&nbsp;
<span style="color: #0000ff;">finally</span>
HTTPClient.Free;
<span style="color: #0000ff;">end</span>;
&nbsp;
LogMessage<span class="br0">&#40;</span><span style="color: #FF0000;">''</span><span class="br0">&#41;</span>;
LogMessage<span class="br0">&#40;</span><span style="color: #FF0000;">'=== Payment Links API Test Completed ==='</span><span class="br0">&#41;</span>;
&nbsp;
<span style="color: #0000ff;">except</span>
<span style="color: #0000ff;">on</span> E: Exception <span style="color: #0000ff;">do</span>
<span style="color: #0000ff;">begin</span>
LogMessage<span class="br0">&#40;</span><span style="color: #FF0000;">''</span><span class="br0">&#41;</span>;
LogMessage<span class="br0">&#40;</span><span style="color: #FF0000;">'EXCEPTION: '</span> + E.ClassName + <span style="color: #FF0000;">' - '</span> + E.Message<span class="br0">&#41;</span>;
<span style="color: #0000ff;">end</span>;
<span style="color: #0000ff;">end</span>;
<span style="color: #0000ff;">end</span>;</pre></td></tr></table></code><hr />
</div></div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f779/environnements-developpement/delphi/web-reseau/"><![CDATA[Web & réseau]]></category>
			<dc:creator>nakos91</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2184223/environnements-developpement/delphi/web-reseau/delphi-appel-api-ne-fonctionne-sous-delphi-etre-faut-utiliser-toauth1authenticator/</guid>
		</item>
		<item>
			<title>Delphi appel API ne fonctionne pas sous Delphi mais ok sous postman et powershell</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2182705&amp;goto=newpost</link>
			<pubDate>Tue, 17 Mar 2026 14:34:06 GMT</pubDate>
			<description>bonjour je dois faire un...</description>
			<content:encoded><![CDATA[<div>bonjour je dois faire un appel post vers une serveur pour mettre à jour des datas <br />
je fait un 1er appel afin de recupérer un Bearer , cela fonctionne dans Delphi<br />
<br />
puis un second appel pour faire la MAJ des données et là alors que ça fonctionne sans souci dans postman , dans powershell impossible de le faire fonctionner dans débogueur REST  12.0 ni dans Delphi <br />
<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br /></div></td><td valign="top"><pre style="margin: 0">$headers = New-<span style="color: #0000ff;">Object</span> <span style="color: #FF0000;">&quot;System.Collections.Generic.Dictionary[[String],[String]]&quot;</span>
$headers.Add<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;Authorization&quot;</span>, <span style="color: #FF0000;">&quot;Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMyIsImF1dGgiOiJBZG1pbmlzdHJhdGV1ciIsIm9yZ0NvZGUiOiI0NDUiLCJhdXRoZW50RGF0ZVRpbWUiOiIyMDI2MDMxNzA5MjIwOCIsImV4cCI6MTc3MzgyNTcyOH0.U44uVs-aopxqLf-cmvREwjSvwxo57NrK6QAn21WeerU&quot;</span><span class="br0">&#41;</span>
$headers.Add<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;Content-Type&quot;</span>, <span style="color: #FF0000;">&quot;application/json&quot;</span><span class="br0">&#41;</span>
&nbsp;
<span style="color: #cc66cc;">$b</span>ody = @<span style="color: #FF0000;">&quot;</span>
<span style="color: #FF0000;">{</span>
<span style="color: #FF0000;">  `&quot;</span>documentNumber`<span style="color: #FF0000;">&quot;: `&quot;</span>V445013-0000001`<span style="color: #FF0000;">&quot;,</span>
<span style="color: #FF0000;">  `&quot;</span>orderType`<span style="color: #FF0000;">&quot;: `&quot;</span>VAD`<span style="color: #FF0000;">&quot;,</span>
<span style="color: #FF0000;">  `&quot;</span>paymentDetails`<span style="color: #FF0000;">&quot;: [</span>
<span style="color: #FF0000;">    {</span>
<span style="color: #FF0000;">      `&quot;</span>lineNumber`<span style="color: #FF0000;">&quot;: `&quot;</span><span style="color: #cc66cc;">1</span>`<span style="color: #FF0000;">&quot;,</span>
<span style="color: #FF0000;">      `&quot;</span>amount`<span style="color: #FF0000;">&quot;: `&quot;</span><span style="color: #cc66cc;">1</span>`<span style="color: #FF0000;">&quot;,</span>
<span style="color: #FF0000;">      `&quot;</span>paymentMethod`<span style="color: #FF0000;">&quot;: `&quot;</span>ZZ26`<span style="color: #FF0000;">&quot;</span>
<span style="color: #FF0000;">    },</span>
<span style="color: #FF0000;">     {</span>
<span style="color: #FF0000;">      `&quot;</span>lineNumber`<span style="color: #FF0000;">&quot;: `&quot;</span><span style="color: #cc66cc;">2</span>`<span style="color: #FF0000;">&quot;,</span>
<span style="color: #FF0000;">      `&quot;</span>amount`<span style="color: #FF0000;">&quot;: `&quot;</span><span style="color: #cc66cc;">1</span>`<span style="color: #FF0000;">&quot;,</span>
<span style="color: #FF0000;">      `&quot;</span>paymentMethod`<span style="color: #FF0000;">&quot;: `&quot;</span>ZZ26`<span style="color: #FF0000;">&quot;</span>
<span style="color: #FF0000;">    }</span>
<span style="color: #FF0000;">  ]</span>
<span style="color: #FF0000;">}</span>
<span style="color: #FF0000;">&quot;</span>@
&nbsp;
$response = Invoke-RestMethod <span style="color: #FF0000;">'https://api.ptsrc.adeiz.com/services/orderservice/api/v1/sales-orders-lite'</span> -Method <span style="color: #FF0000;">'POST'</span> -Headers $headers -Body <span style="color: #cc66cc;">$b</span>ody
$response | ConvertTo-Json<span class="br0">&#93;</span></pre></td></tr></table></code><hr />
</div><div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br />56<br />57<br />58<br />59<br />60<br />61<br />62<br />63<br />64<br />65<br />66<br />67<br />68<br />69<br />70<br />71<br />72<br />73<br />74<br />75<br />76<br />77<br />78<br />79<br />80<br />81<br />82<br />83<br />84<br />85<br />86<br />87<br />88<br />89<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #0000ff;">procedure</span> SendSalesOrder;
<span style="color: #0000ff;">var</span>
  RESTClient: TRESTClient;
  RESTRequest: TRESTRequest;
  RESTResponse: TRESTResponse;
   paymentDetailsArray:tjsonarray;
  jsonBody, payment1, payment2: TJSONObject;
  jsonObject, paymentDetailsObject: TJSONObject;
<span style="color: #0000ff;">begin</span>
  <span style="color: #808080;">// Cr&eacute;er le client REST</span>
  RESTClient := TRESTClient.Create<span class="br0">&#40;</span><span style="color: #0000ff;">nil</span><span class="br0">&#41;</span>;
  <span style="color: #0000ff;">try</span>
    RESTClient.BaseURL := <span style="color: #FF0000;">'https://api.ptsrc.adeiz.com/services/orderservice/api/v1/sales-orders-lite'</span>;
&nbsp;
    <span style="color: #808080;">// Cr&eacute;er la requ&ecirc;te</span>
    RESTRequest := TRESTRequest.Create<span class="br0">&#40;</span><span style="color: #0000ff;">nil</span><span class="br0">&#41;</span>;
    <span style="color: #0000ff;">try</span>
      RESTRequest.Client := RESTClient;
      RESTRequest.Method := rmPOST;
&nbsp;
      <span style="color: #808080;">// Ajouter les en-t&ecirc;tes</span>
<span style="color: #808080;">//      restrequest.AddParameter('Authorization');</span>
      restrequest.AddParameter<span class="br0">&#40;</span><span style="color: #FF0000;">'&quot;Authorization&quot;'</span>,<span style="color: #FF0000;">'&quot;Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMyIsImF1dGgiOiJBZG1pbmlzdHJhdGV1ciIsIm9yZ0NvZGUiOiI0NDUiLCJhdXRoZW50RGF0ZVRpbWUiOiIyMDI2MDMxNzEzMjIzMCIsImV4cCI6MTc3Mzg0MDE1MH0.tIflejQyPcCKp52zPRhYCuiSB0XMkHLIAHyoF*****&quot;'</span>,pkHTTPHEADER<span class="br0">&#41;</span>;
<span style="color: #808080;">//      RESTRequest.AddHeader('Authorization', 'Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMyIsImF1dGgiOiJBZG1pbmlzdHJhdGV1ciIsIm9yZ0NvZGUiOiI0NDUiLCJhdXRoZW50RGF0ZVRpbWUiOiIyMDI2MDMxNzA5MjIwOCIsImV4cCI6MTc3MzgyNTcyOH0.U44uVs-aopxqLf-cmvREwjSvwxo57NrK6QAn21*****');</span>
      RESTRequest.Addparameter<span class="br0">&#40;</span><span style="color: #FF0000;">'Content-Type'</span>, <span style="color: #FF0000;">'application/json'</span><span class="br0">&#41;</span>;
&nbsp;
      <span style="color: #808080;">// Construire le corps JSON</span>
      jsonBody := TJSONobject.Create;
&nbsp;
      <span style="color: #808080;">// Cr&eacute;er la partie principale</span>
      jsonObject := TJSONObject.Create;
      <span style="color: #0000ff;">try</span>
        jsonObject.AddPair<span class="br0">&#40;</span><span style="color: #FF0000;">'documentNumber'</span>, <span style="color: #FF0000;">'V445013-0000001'</span><span class="br0">&#41;</span>;
        jsonObject.AddPair<span class="br0">&#40;</span><span style="color: #FF0000;">'orderType'</span>, <span style="color: #FF0000;">'VAD'</span><span class="br0">&#41;</span>;
&nbsp;
        <span style="color: #808080;">// PaymentDetails array</span>
        paymentDetailsArray := TJSONarray.Create;
&nbsp;
        <span style="color: #808080;">// Payment 1</span>
        payment1 := TJSONObject.Create;
        payment1.AddPair<span class="br0">&#40;</span><span style="color: #FF0000;">'lineNumber'</span>, <span style="color: #FF0000;">'1'</span><span class="br0">&#41;</span>;
        payment1.AddPair<span class="br0">&#40;</span><span style="color: #FF0000;">'amount'</span>, <span style="color: #FF0000;">'1'</span><span class="br0">&#41;</span>;
        payment1.AddPair<span class="br0">&#40;</span><span style="color: #FF0000;">'paymentMethod'</span>, <span style="color: #FF0000;">'ZZ26'</span><span class="br0">&#41;</span>;
&nbsp;
        <span style="color: #808080;">// Payment 2</span>
        payment2 := TJSONObject.Create;
        payment2.AddPair<span class="br0">&#40;</span><span style="color: #FF0000;">'lineNumber'</span>, <span style="color: #FF0000;">'2'</span><span class="br0">&#41;</span>;
        payment2.AddPair<span class="br0">&#40;</span><span style="color: #FF0000;">'amount'</span>, <span style="color: #FF0000;">'1'</span><span class="br0">&#41;</span>;
        payment2.AddPair<span class="br0">&#40;</span><span style="color: #FF0000;">'paymentMethod'</span>, <span style="color: #FF0000;">'ZZ26'</span><span class="br0">&#41;</span>;
&nbsp;
        paymentDetailsArray.Add<span class="br0">&#40;</span>payment1<span class="br0">&#41;</span>;
        paymentDetailsArray.Add<span class="br0">&#40;</span>payment2<span class="br0">&#41;</span>;
&nbsp;
        jsonObject.AddPair<span class="br0">&#40;</span><span style="color: #FF0000;">'paymentDetails'</span>, paymentDetailsArray<span class="br0">&#41;</span>;
&nbsp;
        <span style="color: #808080;">// Convertir en string</span>
        jsonBody:=jsonObject;
      <span style="color: #0000ff;">finally</span>
        <span style="color: #808080;">// Lib&eacute;rer les objets temporaires</span>
        <span style="color: #808080;">// Note: jsonObject, paymentDetailsArray, payment1, payment2 sont ajout&eacute;s &agrave; jsonBody</span>
        <span style="color: #808080;">// et seront lib&eacute;r&eacute;s avec jsonBody si on ne les lib&egrave;re pas ici</span>
      <span style="color: #0000ff;">end</span>;
&nbsp;
      <span style="color: #808080;">// D&eacute;finir le corps de la requ&ecirc;te</span>
      restrequest.AddBody<span class="br0">&#40;</span>jsonBody.ToString<span class="br0">&#41;</span>;
<span style="color: #808080;">//      RESTRequest.Body := TEncoding.UTF8.GetBytes(jsonBody.ToString);</span>
<span style="color: #808080;">//      RESTRequest.ContentType:=application/json;</span>
&nbsp;
      <span style="color: #808080;">// Ex&eacute;cuter la requ&ecirc;te</span>
      RESTResponse := TRESTResponse.Create<span class="br0">&#40;</span><span style="color: #0000ff;">nil</span><span class="br0">&#41;</span>;
      <span style="color: #0000ff;">try</span>
        RESTRequest.Response := RESTResponse;
        RESTRequest.Execute;
&nbsp;
        <span style="color: #808080;">// Traiter la r&eacute;ponse</span>
<span style="color: #808080;">//        showmessage ('R&eacute;ponse: ', RESTResponse.Content);</span>
        form5.memo1.lines.add<span class="br0">&#40;</span>RESTResponse.Content<span class="br0">&#41;</span>;
        <span style="color: #0000ff;">finally</span>
        RESTResponse.Free;
      <span style="color: #0000ff;">end</span>;
&nbsp;
    <span style="color: #0000ff;">finally</span>
      RESTRequest.Free;
    <span style="color: #0000ff;">end</span>;
&nbsp;
  <span style="color: #0000ff;">finally</span>
    RESTClient.Free;
  <span style="color: #0000ff;">end</span>;
<span style="color: #0000ff;">end</span>;</pre></td></tr></table></code><hr />
</div>Le bearer est différent car récupérer à chaque fois <br />
<br />
<br />
et là l'export de REST DEBOGUEUR<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #0000ff;">object</span> RESTClient1: TRESTClient
  BaseURL = 
    <span style="color: #FF0000;">'https://api.ptsrc.adeiz.com/services/orderservice/api/v1/sales-o'</span> +
    <span style="color: #FF0000;">'rders-lite'</span>
  Params = &lt;&gt;
  SynchronizedEvents = <span style="color: #0000ff;">False</span>
<span style="color: #0000ff;">end</span>
<span style="color: #0000ff;">object</span> RESTRequest1: TRESTRequest
  AssignedValues = <span class="br0">&#91;</span>rvConnectTimeout, rvReadTimeout<span class="br0">&#93;</span>
  Client = RESTClient1
  Method = rmPOST
  Params = &lt;
    item
      Kind = pkHTTPHEADER
      Name = <span style="color: #FF0000;">'Authorization'</span>
      Options = <span class="br0">&#91;</span>poDoNotEncode<span class="br0">&#93;</span>
      Value = 
        <span style="color: #FF0000;">'Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMyIsImF1dGgiOiJBZG1pbmlz'</span> +
        <span style="color: #FF0000;">'dHJhdGV1ciIsIm9yZ0NvZGUiOiI0NDUiLCJhdXRoZW50RGF0ZVRpbWUiOiIyMDI2'</span> +
        <span style="color: #FF0000;">'MDMxNjE0MjMxOSIsImV4cCI6MTc3Mzc1NzM5OX0.esg-OQXCTo_Nwke8G_6HkuGM'</span> +
        <span style="color: #FF0000;">'dGa3g3Z7b0uK5mrH_xY'</span>
    <span style="color: #0000ff;">end</span>
    item
      Kind = pkREQUESTBODY
      Name = <span style="color: #FF0000;">'bodyB6827D9362784EE6BA295D02118AD896'</span>
      Value = 
        <span style="color: #FF0000;">'bodyB6827D9362784EE6BA295D02118AD896{'</span><span style="color: #cc66cc;">#13</span><span style="color: #cc66cc;">#10</span><span style="color: #FF0000;">'  &quot;documentNumber&quot;: &quot;V445013-0000001&quot;,'</span><span style="color: #cc66cc;">#13</span><span style="color: #cc66cc;">#10</span><span style="color: #FF0000;">'  &quot;orderType&quot;: &quot;VAD&quot;,'</span> +
        <span style="color: #cc66cc;">#13</span><span style="color: #cc66cc;">#10</span><span style="color: #FF0000;">'  &quot;paymentDetails&quot;: ['</span><span style="color: #cc66cc;">#13</span><span style="color: #cc66cc;">#10</span><span style="color: #FF0000;">'    {'</span><span style="color: #cc66cc;">#13</span><span style="color: #cc66cc;">#10</span><span style="color: #FF0000;">'      &quot;lineNumber&quot;: &quot;1&quot;,'</span><span style="color: #cc66cc;">#13</span><span style="color: #cc66cc;">#10</span><span style="color: #FF0000;">'      '</span> +
        <span style="color: #FF0000;">'&quot;amount&quot;: &quot;1&quot;,'</span><span style="color: #cc66cc;">#13</span><span style="color: #cc66cc;">#10</span><span style="color: #FF0000;">'      &quot;paymentMethod&quot;: &quot;ZZ26&quot;'</span><span style="color: #cc66cc;">#13</span><span style="color: #cc66cc;">#10</span><span style="color: #FF0000;">'    },'</span><span style="color: #cc66cc;">#13</span><span style="color: #cc66cc;">#10</span><span style="color: #FF0000;">'     {'</span><span style="color: #cc66cc;">#13</span><span style="color: #cc66cc;">#10</span><span style="color: #FF0000;">' '</span> +
        <span style="color: #FF0000;">'     &quot;lineNumber&quot;: &quot;2&quot;,'</span><span style="color: #cc66cc;">#13</span><span style="color: #cc66cc;">#10</span><span style="color: #FF0000;">'      &quot;amount&quot;: &quot;1&quot;,'</span><span style="color: #cc66cc;">#13</span><span style="color: #cc66cc;">#10</span><span style="color: #FF0000;">'      &quot;paymentMet'</span> +
        <span style="color: #FF0000;">'hod&quot;: &quot;ZZ26&quot;'</span><span style="color: #cc66cc;">#13</span><span style="color: #cc66cc;">#10</span><span style="color: #FF0000;">'    }'</span><span style="color: #cc66cc;">#13</span><span style="color: #cc66cc;">#10</span><span style="color: #FF0000;">'  ]'</span><span style="color: #cc66cc;">#13</span><span style="color: #cc66cc;">#10</span><span style="color: #FF0000;">'}'</span>
      ContentTypeStr = <span style="color: #FF0000;">'application/json'</span>
    end&gt;
  Response = RESTResponse1
  SynchronizedEvents = <span style="color: #0000ff;">False</span>
<span style="color: #0000ff;">end</span>
<span style="color: #0000ff;">object</span> RESTResponse1: TRESTResponse
<span style="color: #0000ff;">end</span></pre></td></tr></table></code><hr />
</div>je ne comprend pas pourquoi j'ai toujours cette erreur en Ddelphi ou REST debogueur<br />
{&quot;status &quot;:&quot;UNAUTHORIZED&quot;,&quot;statusCode&quot;:&quot;401 Unauthorized&quot;,&quot;ExceptionType&quot;:&quot;org.springframework.security.authentication.InsufficientAuthenticationException&quot;,&quot;message&quot;:&quot;Full authentication is required to access this resource&quot;,&quot;path&quot;:&quot;/api/v1/sales-orders-lite&quot;,&quot;resourceVarName&quot;:&quot;&quot;}</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f779/environnements-developpement/delphi/web-reseau/"><![CDATA[Web & réseau]]></category>
			<dc:creator>nakos91</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2182705/environnements-developpement/delphi/web-reseau/delphi-appel-api-ne-fonctionne-sous-delphi-ok-sous-postman-powershell/</guid>
		</item>
		<item>
			<title>tNetHTTPRequest tNetHTTPClient comportement etrange sous linux</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2180547&amp;goto=newpost</link>
			<pubDate>Thu, 20 Nov 2025 10:04:00 GMT</pubDate>
			<description>Bonjour 
 
je suis en train...</description>
			<content:encoded><![CDATA[<div>Bonjour<br />
<br />
je suis en train de d’écrire une unité pour générer des downtime ou plage de maintenance sur nos serveurs de supervisions (Zabbix, Nagios)<br />
j'utilise Delphi 13 avec les deux patch<br />
et environnement Windows et Linux<br />
pour la partie Zabbix ras a premiere vue<br />
mais Nagios il y a un petit soucis sous linux<br />
pour générer un downtime il faut passer par un post sur une url du style<br />
<div class="bbcode_container">
	<div class="bbcode_description">Citation:</div>
	<div class="bbcode_quote printable">
		<hr />
		
			%APIBASE%/nrdp/?cmd=submitcmd&amp;token=%TOKEN%&amp;command=SCHEDULE_HOST_DOWNTIME;%HOST%;%DATEDEB%;%DATEFIN%;1%;0;0;%USER%;%COMMENTAIRE%
			
		<hr />
	</div>
</div>ce qui donne apres remplacement des varriables<br />
<div class="bbcode_container">
	<div class="bbcode_description">Citation:</div>
	<div class="bbcode_quote printable">
		<hr />
		
			ht..s://supervision/NAEMON/api/nrdp/?cmd=submitcmd&amp;token=montoken&amp;command=SCHEDULE_HOST_DOWNTIME%3BSERVEUR001%3B1763624844%3B1763626044%3B1%3B0%3B0%3BFBASS%3BTest+V3.0+pour+vôir+éèç
			
		<hr />
	</div>
</div>qui dans un curl, page web, .. fonctionne nickel <br />
<br />
la partie du code d’envoi rien de particulier ici j'ai commenter l'utilisation du tNetHTTPRequest mais çà change rien au souci <br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Citation:</div>
	<div class="bbcode_quote printable">
		<hr />
		
			//    res := fNetHTTPRequest.get ( strCmdTmp );<br />
    res := fNetHTTPClient.get ( strCmdTmp );
			
		<hr />
	</div>
</div>la déclaration du fNetHTTPClient est :<br />
<div class="bbcode_container">
	<div class="bbcode_description">Citation:</div>
	<div class="bbcode_quote printable">
		<hr />
		
			 fNetHTTPClient                   := TNetHTTPClient.Create( nil );<br />
  fNetHTTPClient.Asynchronous      := False;<br />
  fNetHTTPClient.ConnectionTimeout := 1000;<br />
  fNetHTTPClient.ResponseTimeout   := 1000;<br />
  fNetHTTPClient.HandleRedirects   := True;<br />
  fNetHTTPClient.AllowCookies      := True;<br />
  fNetHTTPClient.UserAgent         := 'Embarcadero URI Client/1.0';<br />
  fNetHTTPClient.OnValidateServerCertificate := onValidateCerttificat;<br />
  fNetHTTPClient.UseDefaultCredentials := false;
			
		<hr />
	</div>
</div>pour l'utilisation du request j'avais mis un datamodule et placé les deux composant Client et request dessus<br />
<br />
le soucis que j'ai sous linux c'est que nrpd reçois en double les requêtes et donc me génère deux downtime<br />
<div class="bbcode_container">
	<div class="bbcode_description">Citation:</div>
	<div class="bbcode_quote printable">
		<hr />
		
			[1763626112] SCHEDULE_HOST_DOWNTIME;SERVEUR001;1763624844;1763626044;1;0;0;FBASS;Test V3.0 pour vôir éèç<br />
[1763626112] SCHEDULE_HOST_DOWNTIME;SERVEUR001;1763624844;1763626044;1;0;0;FBASS;Test V3.0 pour vôir éèç
			
		<hr />
	</div>
</div>il semble que fNetHTTPClient envoie deux fois la requête sous linux<br />
malgré que le onreceivedata ne soit appelé qu'une fois<br />
<br />
j'ai testé <br />
- avec <div class="bbcode_container">
	<div class="bbcode_description">Citation:</div>
	<div class="bbcode_quote printable">
		<hr />
		
			fNetHTTPClient.HandleRedirects   := false;
			
		<hr />
	</div>
</div>- sans les accents dans le commentaire<br />
<br />
suis je devant un bug tNetHTTPClient vs linux ou j'ai zappé quelque chose ?<br />
<br />
ps le retour est le suivant<br />
HTTP/1.1 200 OK <br />
<div class="bbcode_container">
	<div class="bbcode_description">Citation:</div>
	<div class="bbcode_quote printable">
		<hr />
		
			&quot;&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt; &lt;result&gt;   &lt;status&gt;0&lt;/status&gt;   &lt;message&gt;OK&lt;/message&gt; &lt;/result&gt;
			
		<hr />
	</div>
</div></div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f779/environnements-developpement/delphi/web-reseau/"><![CDATA[Web & réseau]]></category>
			<dc:creator>fbalien</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2180547/environnements-developpement/delphi/web-reseau/tnethttprequest-tnethttpclient-comportement-etrange-sous-linux/</guid>
		</item>
		<item>
			<title>Taille max cumulée des cookies vers un service Web Delphi</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2179401&amp;goto=newpost</link>
			<pubDate>Mon, 22 Sep 2025 08:31:06 GMT</pubDate>
			<description>Bonjour, 
 
Une de nos...</description>
			<content:encoded><![CDATA[<div>Bonjour,<br />
<br />
Une de nos application (html/js) échange avec différents web services.<br />
Certains web services (externes ou internes non Delphi) produisent des cookies volumineux.<br />
<br />
<b>Dès que la somme des tailles des cookies dépasse environ 4096o nos web services ISAPI en Delphi (12.3) ne traitent plus aucun cookies.</b><br />
Nous n'observons aucun problème coté clients (essaie avec tous les navigateurs : aucun avertissement, les services non Delphi traitent les cookies).<br />
<br />
Je vois la rfc2109 (<a rel="nofollow" href="https://www.rfc-editor.org/rfc/rfc2109.html" target="_blank">https://www.rfc-editor.org/rfc/rfc2109.html</a>) qui indique qu'un navigateur (donc le serveur qui répond) doit accepter 20cookies par domaine d'une taille max de 4096o<br />
<br />
<b>Connaissez-vous un paramètre coté Delphi pour supporter plus de cookies ?</b><br />
<br />
(sachant que parallèlement nous discutons avec les émetteurs de ces cookies afin de voir si ils peuvent êtres réduits)</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f779/environnements-developpement/delphi/web-reseau/"><![CDATA[Web & réseau]]></category>
			<dc:creator>Zatoobux</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2179401/environnements-developpement/delphi/web-reseau/taille-max-cumulee-cookies-vers-service-web-delphi/</guid>
		</item>
	</channel>
</rss>
