En la actualidad la mayoría de los servicios web están implementados bajo arquitecturas REST o SOAP, puede existir la posibilidad de que se necesite hacer un request desde su línea de comando sin la necesidad de instalar herramientas como SOAPUI. Las herramientas son realmente útiles, pero a veces no se pueden usar herramientas, para este caso usaremos el comando curl para hacer la solicitud, si no lo tiene instalado, use el siguiente comando.
Distribuciones Fedora
sudo yum install curl
Distribuciones Debian
sudo apt-get install curl
Paso 1:
Vamos a crear la solicitud SOAP, para ello agregaremos un archivo xml con los parámetros de invocación al servicio web, el archivo se llamara request.xml
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v1="http://schemas.conversesolutions.com/xsd/dmticta/v1"> <soapenv:Header/> <soapenv:Body> <v1:GetVehicleLimitedInfo> <v1:vehicleNo>?</v1:vehicleNo> <v1:phoneNo>?</v1:phoneNo> </v1:GetVehicleLimitedInfo> </soapenv:Body> </soapenv:Envelope>
Paso 2:
curl -H "Content-Type: text/xml" --header "SOAPAction: action_you_want_to_call" --data @file_name url_of_the_soap_web_service_endpoint
curl -H "Content-Type: text/xml" --header "SOAPAction: GetVehicleLimitedInfo" --data @request.xml http://demo.com/recurso?WSDL
La solicitud al servicio web daria la siguiente respuesta:
<?xml version="1.0" encoding="UTF-8"?> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <soap:Body> <GetVehicleLimitedInfoResponse xmlns="http://schemas.conversesolutions.com/xsd/dmticta/v1"> <return> <ResponseMessage xsi:nil="true" /> <ErrorCode xsi:nil="true" /> <RequestId>1411050004</RequestId> <TransactionCharge>200</TransactionCharge> <VehicleNumber>GP-XXYY</VehicleNumber> <AbsoluteOwner /> <EngineNo>4G13-YX59ZC</EngineNo> <ClassOfVehicle>MOTOR CAR</ClassOfVehicle> <Make>MITSUBISHI</Make> <Model>LANCER</Model> <YearOfManufacture>1999</YearOfManufacture> <NoOfSpecialConditions>0</NoOfSpecialConditions> <SpecialConditions xsi:nil="true" /> </return> </GetVehicleLimitedInfoResponse> </soap:Body> </soap:Envelope>
Se puede agregar, después de url_of_the_soap_web_service_endpoint, | xmllint –format – para que la respuesta a la solicitud sea por consola.