LSLTest Rpc.php
Revision as of 15:53, 25 September 2007 by Vektor Linden (talk | contribs) (New page: <pre> <?php /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // // // XML-RPC // // // ...)
<?php /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // // // XML-RPC // // // script for XML-RPC test // // /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////// // // Post To Host // // INPUT: $host, $path, $data_to_send // OUTPUT: // GLOBALS: // LOCALS: $fp /////////////////////////////////////////////////// function postToHost($host, $path, $data_to_send) { $fp = fsockopen($host, 80); fputs($fp, "POST $path HTTP/1.1\r\n"); fputs($fp, "Host: $host\r\n"); fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n"); fputs($fp, "Content-length: ". strlen($data_to_send) ."\r\n"); fputs($fp, "Connection: close\r\n\r\n"); fputs($fp, $data_to_send); // while(!feof($fp)) { // $res .= fgets($fp, 128); // } fclose($fp); // return substr($res, strpos($res, "\r\n\r\n"));; } ///////////////////////////////////////////////// // // Parse Response // // INPUT: $response // OUTPUT: // GLOBALS: // LOCALS: $result /////////////////////////////////////////////////// function parseResponse($response) { $result = array(); if (preg_match_all('#<name>(.+)</name><value><(string|int)>(.*)</\2></value>#U', $response, $regs, PREG_SET_ORDER)) { foreach($regs as $key=>$val) { $result[$val[1]] = $val[3]; } } return $result; } ///////////////////////////////////////////////// // // Send request // // INPUT: $channel, $intValue, $stringValue // OUTPUT: // GLOBALS: // LOCALS: $int, $string, $data /////////////////////////////////////////////////// function sendRequest($channel, $intValue, $stringValue) { $channel = htmlspecialchars($channel); $int = (int)$intValue; $string = htmlspecialchars($stringValue); $data = '<?xml version="1.0"?>'; $data .= '<methodCall>'; $data .= '<methodName>llRemoteData</methodName>'; $data .= '<params><param><value><struct>'; $data .= '<member><name>Channel</name><value><string>'.$channel.'</string></value></member>'; $data .= '<member><name>IntValue</name><value><int>'.$int.'</int></value></member>'; $data .= '<member><name>StringValue</name><value><string>'.$string.'</string></value></member>'; $data .= '</struct></value></param></params></methodCall>'; postToHost("xmlrpc.secondlife.com","/cgi-bin/xmlrpc.cgi", $data); } ///////////////////////////////////////////////////////////////////////////////////// // // Main // ////////////////////////////////////////////////////////////////////////////////////// $channel = $_GET["channel"]; $stringMessage = $_GET["stringMessage"]; $intMessage = $_GET["intMessage"]; sendRequest($channel,$intMessage,$stringMessage); echo "channel:" . $channel . ", stringMessage: " . $stringMessage . ", intMessage: " . $intMessage ; ?>