Postear un documento con formato XML usando el cliente HTTP de laravel

Para este post vamos a usar Twingly como ejemplo, que es un servicio que funciona para hacer ping para notificar que el contenido de nuestro blog fue actualizado, usa el protocolo XML-RPC y el formato de documentos con XML para procesar la información.

twingly

Laravel tiene un wrapper HTTP para hacer peticiones que funciona desde la versión 7 del framework.

El cliente HTTP implementa (entre otras cosas), un método llamado send que posee la siguiente firma:

1send(string $method, string $url, array $options = [])

Entonces, para hacer el ping a twingly solo debemos hacer lo siguiente:

1$xml = '
2<?xml version="1.0"?>
3<methodCall>
4 <methodName>weblogUpdates.ping</methodName>
5 <params>
6 <param>
7 <value>'. config('app.name') .'</value>
8 </param>
9 <param>
10 <value>'. config('app.url') .'</value>
11 </param>
12 </params>
13</methodCall>';
14 
15Http::withHeaders([
16 'Content-Type' => 'text/xml; charset=utf-8'
17])->send('POST', 'https://rpc.twingly.com/', [
18 'body' => $xml,
19]);

Si la petición fue correcta vamos a obtener una respuesta de este tipo:

1<?xml version="1.0" ?>
2<methodResponse>
3 <params>
4 <param>
5 <value>
6 <struct>
7 <member>
8 <name>flerror</name>
9 <value>
10 <boolean>0</boolean>
11 </value>
12 </member>
13 <member>
14 <name>message</name>
15 <value>
16 <string>Thanks for the ping.</string>
17 </value>
18 </member>
19 </struct>
20 </value>
21 </param>
22 </params>
23</methodResponse>

Los invito a leer la documentación completa de twingly.

Angel Cruz's avatar
Autor
Angel Cruz