On dirait que la question a été supprimée lorsque j'ai collé du code.Peut-être créer une classe PHP? Comment couper et rendre un exemple de script plus dynamique
J'ai inclus deux fonctions ci-dessous. L'une est une fonction de connexion et d'obtention d'un identifiant de session, et cette dernière fonction sert à obtenir des métadonnées, qui utilisent l'identifiant de session obtenu à partir de Login(); fonction.
J'ai le sentiment que ce script peut être nettoyé énormément, mais chaque fois que je tente de le faire, il se casse.
Y at-il une façon plus élégante d'envoyer des données que fput? Existe-t-il une manière plus élégante d'analyser une réponse XML à l'aide de between(); avant(); et après(); les fonctions? Ce script peut-il être rendu plus dynamique pour éventuellement être utilisé dans une bibliothèque de toutes sortes?
je comprendre comment les classes PHP peuvent être utilisés, mais je n'ai pas où commencer.
<?php
function Login() {
// Host, Servlet, Port, and Time Out information
$host='host.example.com';
$servlet='XMLAPI';
$port='80';
$time_out='20';
// Username and Password Variables
$username = 'SomeUserId';
$password = 'Somepassword';
$sock = fsockopen ($host, $port, $errno, $errstr, $time_out);
$data = "xml=<?xml version=\"1.0\"?><Envelope><Body><Login>";
$data .= "<USERNAME>" . $username . "</USERNAME>";
$data .= "<PASSWORD>" . $password . "</PASSWORD>";
$data .= "</Login></Body></Envelope>";
$size = strlen ($data);
if (!$sock) {
print("Could not connect to host:". $errno . $errstr);
return (false);
}
fputs ($sock, "POST /servlet/" . $servlet . " HTTP/1.1\n");
fputs ($sock, "Host: " . $host . "\n");
fputs ($sock, "Content-type: application/x-www-form-urlencoded\n");
fputs ($sock, "Content-length: " . $size . "\n");
fputs ($sock, "Connection: close\n\n");
fputs ($sock, $data);
$buffer = "";
while (!feof ($sock)) {
$buffer .= fgets ($sock);
}
fclose ($sock);
//print ($buffer);
return ($buffer);
}
$xml_response = Login();
session_start();
$_SESSION['JsessionID'] = between ("<SESSION_ENCODING>","</SESSION_ENCODING>", $xml_response);
function GetMetaData() {
// List metadata id
$list_id = "7238776";
// Assign JSessionID from Login();
$JsessionID = $_SESSION['JsessionID'];
// Host, Servlet, Port, and Time Out information
$host='host.example.com';
$servlet = 'XMLAPI' . $JsessionID;
$port='80';
$time_out='20';
$sock = fsockopen ($host, $port, $errno, $errstr, $time_out);
if (!$sock) {
print("Could not connect to host:". $errno . $errstr);
return (false);
}
$data = "xml=<?xml version=\"1.0\"?><Envelope><Body>";
$data .= "<GetListMetaData><LIST_ID>" . $list_id . "</LIST_ID>";
$data .= "</GetListMetaData></Body></Envelope>";
$size = strlen ($data);
fputs ($sock, "POST /servlet/" . $servlet . " HTTP/1.1\n");
fputs ($sock, "Host: " . $host . "\n");
fputs ($sock, "Content-type: application/x-www-form-urlencoded\n");
fputs ($sock, "Content-length: " . $size . "\n");
fputs ($sock, "Connection: close\n\n");
fputs ($sock, $data);
$buffer = "";
while (!feof ($sock)) {
$buffer .= fgets ($sock);
}
fclose ($sock);
print ($buffer);
return ($buffer);
}
//XML Parsing Functions
function between ($this, $that, $inthat) {
return before($that, after($this, $inthat));
};
function before ($this, $inthat) {
return substr($inthat, 0, strpos($inthat, $this));
};
function after ($this, $inthat) {
if (!is_bool(strpos($inthat, $this)))
return substr($inthat, strpos($inthat,$this)+strlen($this));
};
// XML Parsing of GetMetaData(); function
$xml_response = GetMetaData();
$id = between ("<ID>","</ID>", $xml_response);
$last_name = between ("<NAME>LAST_NAME</NAME>\n<VALUE>","</VALUE>", $xml_response);
print($id)
?>
Peut-être faire une faveur et StackOverflow ... – shamittomar
Peut-être que vous pourriez effectivement ** poser une question * * au lieu de poster juste beaucoup de code? – Frxstrem
Désolé, j'ai copié la question lors du collage du code. Mise à jour – Taylor