Un utente ha chiesto informazioni su Developing with WordPress di Wordpress

Come inviare una richiesta di posta HTTP utilizzando PHP Curl e WordPress

Un utente ha chiesto 👇

Sto lavorando a uno script per importare un file xml da un altro server tramite un’applicazione Post, questo restituirebbe xml ad altri dati che posso quindi memorizzare in un database wordpress a seconda di determinati valori.

Ho fatto diversi tentativi in ​​questo senso

Questo è il mio primo tentativo con alcune delle cose che funzionano al di fuori di wordpress

`$ curl = curl_init ();

curl_setopt_array ($ curl, edit (
CURLOPT_PORT => “2222”,
CURLOPT_URL => “http://11.111.11.111:2222/folder/query “;,
CURLOPT_RETURNTRANSFER => vero,
CURLOPT_ENCODING => “”,
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => “POST”,
CURLOPT_POSTFIELDS => “ r n nome utente r n 123456789 r n Ciao r n r n “,
CURLOPT_HTTPHEADER => modifica (
“Accetta: application / xml”,
“Controllo deposito: nessun deposito”,
“Connection: keep alive”,
“Tipo di contenuto: application / xml”,
“Host: 80.177.77.210:2222”,
“Postino-Token:”,
“Agente utente: PostmanRuntime / 7.13.0”,
“Accetta codifica: gzip, deflate”,
“Controllo del deposito: nessun deposito”,
“Lunghezza oggetto: 107”
),
));

$ answer = curl_exec ($ curl);
$ err = curl_error ($ curl);

curl_close ($ curl);

if ($ err) {
echo “CURL # Error:”. $ err;
} altro {
print_r ($ risposta);
} “
Ho provato a cambiarlo in wordpress

$url = 'http://11.111.11.111:2222/folder/query';
$args = array(
    'headers' => array( '', 'cache-control' => 'no-cache',
  'Connection' => 'keep-alive',
  'Host' => '80.177.77.210:2222',
  'Content-Type' => 'application/xml',
  'Accept' => 'application/xml' ),
    'body' => '<?xml version="1.0" encoding="UTF-8"?>
<root>
  <something1>username</something1>
  <something2>123456789</something2>
  <something3>Hello</something3>
</root>',
);
$response = wp_remote_post( $url, $args );

$body = wp_remote_retrieve_body( $response );
var_dump($body);

E di nuovo

$url = 'http://11.111.11.111:2222/folder/query';
$request->setHeaders(array(
  'cache-control' => 'no-cache',
  'Connection' => 'keep-alive',
  'content-length' => '107',
  'accept-encoding' => 'gzip, deflate',
  'Host' => '80.177.77.210:2222',
  'Postman-Token' => '',
  'Cache-Control' => 'no-cache',
  'User-Agent' => 'PostmanRuntime/7.13.0',
  'Content-Type' => 'application/xml',
  'Accept' => 'application/xml'
));
$body = '<?xml version="1.0" encoding="UTF-8"?>
<root>
  <something1>username</something1>
  <something2>123456789</something2>
  <something3>Hello</something3>
</root>';
$result = wp_remote_post($url, array(
        'method' => 'POST',
        'headers' => $request,
        'httpversion' => '1.0',
        'body' => $body)
    );
$reci = wp_remote_retrieve_body( $result );
var_dump($reci);

Non accade nulla e Error_log restituisce vuoto

Cosa sto facendo qui? Qualcuno può aiutare, per favore

Inoltre c’è un posto particolare in cui dovrei eseguire lo script? Modello di pagina? Functions.php? Collegare?

Alla fine dovrò prendere il nome utente corrente e il metacampo utente personalizzato e inserire questi dati qui

 <root>
      <something1>username</something1>
      <something2>123456789</something2>
      <something3>Hello</something3>
    </root>

e poi dovrò formattare l’XML in php quando verrà restituito in modo da poter fare le cose con i dati.

Questo argomento è stato modificato 1 anno, 9 mesi fa da.

Lanciatore di thread

(@bubblechaz)

1 anno, 9 mesi fa

Sono riuscito a risolverlo aggiungendo quanto segue al mio functions.php

add_shortcode('my_shortode', 'my_function');
function my_function () {

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_PORT => "2222",
  CURLOPT_URL => "http://11.111.11.111:2222/folder/query",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => "<root>rn  <something1>username</something1>rn  <something2>123456789</something2>rn  <something3>Hello</something3>rn</root>rn",
  CURLOPT_HTTPHEADER => array(
    "Accept: application/xml",
    "Cache-Control: no-cache",
    "Connection: keep-alive",
    "Content-Type: application/xml",
    "Host: 80.177.77.210:2222",
    "Postman-Token: ",
    "User-Agent: ",
    "accept-encoding: gzip, deflate",
    "cache-control: no-cache",
    "content-length: 107"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
}

Quindi nel mio modello di pagina

Was this helpful?

0 / 0

Lascia un commento 0

Your email address will not be published. Required fields are marked *