php xml curl https php4

curl xml php



PHP4: ¿Enviar XML a través de HTTPS/POST a través de cURL? (4)

Use la clase SoapClient provista con la mayoría de las instalaciones de PHP

Un ejemplo es:

$soap = new SoapClient("http://some.url/service/some.wsdl"); $args = array("someTypeName" => "someTypeValue" "someOtherTypeName" => "someOtherTypeValue"); $response = $soap->executeSomeService($args); print_r($response);

Escribí una clase / función para enviar xml sobre https a través de PHP4 / cURL, solo preguntándome si este es el enfoque correcto, o si hay uno mejor.

Tenga en cuenta que PHP5 no es una opción en este momento.

/** * Send XML via http(s) post * * curl --header "Content-Type: text/xml" --data "<?xml version="1.0"?>...." http://www.foo.com/ * */ function sendXmlOverPost($url, $xml) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); // For xml, change the content-type. curl_setopt ($ch, CURLOPT_HTTPHEADER, Array("Content-Type: text/xml")); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $xml); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // ask for results to be returned if(CurlHelper::checkHttpsURL($url)) { curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); } // Send to remote and return data to caller. $result = curl_exec($ch); curl_close($ch); return $result; }

¡aclamaciones!


Si el protocolo que está utilizando es XML-RPC (parece que está basado en lo que ha dicho) y está utilizando al menos PHP 4.2, eche un vistazo a http://phpxmlrpc.sourceforge.net/ para bibliotecas y recursos.


$ ch = curl_init ($ serviceUrl);

if( $this -> usingHTTPS() ) { curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, $this->sslVerifyHost); } curl_setopt($ch,CURLOPT_POST,TRUE); curl_setopt($ch, CURLOPT_HEADER, FALSE); curl_setopt ($ch, CURLOPT_POSTFIELDS, "OTA_request=".urlencode($this->xmlMessage)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); $this->xmlResponse = curl_exec ($ch); $this -> callerFactory -> dbgMsg(''xmlResponse: <hr><pre>''.htmlentities($this->xmlResponse).''</pre><hr>''. curl_error($ch)); curl_close ($ch); $this->checkResponse();


¡Gran solución! Encontré uno similar aquí también:

También han mostrado cómo recibir este tipo de XML / JSON en el servidor

// here you can have all the required business checks if ( $_SERVER[''REQUEST_METHOD''] === ''POST'' ){ $postText = file_get_contents(''php://input''); }