Jump to content

Problem with PHP


Sasu

Recommended Posts

I dont know if the section is correct, but can you help me?

I tried to connect to my server from PHP and it says me:

Fatal error: Uncaught exception 'Exception' with message 'Could not connect to 181.27.149.37:22005' in /home/u333927571/public_html/forum/MTA/sdk/mta_sdk.php:146 Stack trace: #0 /home/u333927571/public_html/forum/MTA/sdk/mta_sdk.php(79): mta->do_post_request('181.27.149.37', 22005, '/test1/call/get...', '') #1 /home/u333927571/public_html/forum/MTA/sdk/mta_sdk.php(257): mta->callFunction('test1', 'getThisResource', Array) #2 /home/u333927571/public_html/forum/MTA/test.php(6): Resource->call('getThisResource') #3 {main} thrown in /home/u333927571/public_html/forum/MTA/sdk/mta_sdk.php on line 146

My php:

<?php 
require "sdk/mta_sdk.php"; 
echo 'TEST LALAL ._. ._______. <br>'; 
$mtaServer = new mta("181.27.149.37", 22005); 
$resource = $mtaServer->getResource ( "test1" ); 
$retn = $resource->call ( "getThisResource" ); // $retn is an array containing the values the function returned 
$resourceElement = $retn[0]; // the first returned value is the resource 
$retn = $resource->call ( "getResourceName", $resourceElement );  
$resourceName = $retn[0]; 
  
echo 'hola'; 
echo $resourceName; 
?> 

And the port 22005 is open, I tested it with command 'openports'.

Link to comment

You mean this? :

<?php 
/**
************************************
* MTA PHP SDK
************************************
*
* @copyright    Copyright (C) 2010, Multi Theft Auto
* @author       JackC, eAi, Sebas
* @link         [url=http://www.mtasa.com]http://www.mtasa.com[/url]
* @version      0.4
*/
 
class mta
{
    private $useCurl = false;
    private $sockTimeout = 6; // seconds
   
    public $http_username = '';
    public $http_password = '';
   
    public $host = '';
    public $port = '';
   
    private $resources = array();
   
    public function __construct( $host, $port, $username = "", $pass = "" )
    {
        $this->host = $host;
        $this->port = $port;
        $this->http_username = $username;
        $this->http_password = $pass;
    }
   
    public function getResource ( $resourceName )
    {
        foreach ( $this->resources as $resource )
        {
            if ( $resource->getName == $resourceName )
                return $resource;
        }
       
        $res = new Resource ( $resourceName, $this );
        $this->resources[] = $res;
        return $res;
    }
   
    public static function getInput()
    {
        $out = mta::convertToObjects( json_decode( file_get_contents('php://input'), true ) );
        return (is_array($out)) ? $out : false;
    }
   
    public static function doReturn()
    {
        $val = array();
       
        for ( $i = 0; $i < func_num_args(); $i++ )
        {
            $val[$i] = func_get_arg($i);
        }
       
        $val = mta::convertFromObjects($val);
        $json_output = json_encode($val);
        //echo $json_output;
    }
   
    public function callFunction( $resourceName, $function, $args )
    {
        if ( $args != null )
        {
            $args = mta::convertFromObjects($args);
            $json_output = json_encode($args);
        }
        else
        {
            $json_output = "";
        }
        $path = "/" . $resourceName . "/call/" . $function;
        $result = $this->do_post_request( $this->host, $this->port, $path, $json_output );
        echo $json_output;
        $out = mta::convertToObjects( json_decode( $result, true ) );
       
        return (is_array($out)) ? $out : false;
    }
   
    public static function convertToObjects( $item )
    {
        if ( is_array($item) )
        {
            foreach ( $item as &$value )
            {
                $value = mta::convertToObjects( $value );
            }
        }
        else if ( is_string($item) )
        {   
            if ( substr( $item, 0, 3 ) == "^E^" )
            {
                $item = new Element( substr( $item, 3 ) );
            }
            elseif ( substr( $item, 0, 3 ) == "^R^" )
            {
                $item = $this->getResource( substr( $item, 3 ) );
            }
        }
       
        return $item;
    }
   
    public static function convertFromObjects( $item )
    {
        if ( is_array($item) )
        {
            foreach ( $item as &$value )
            {
                $value = mta::convertFromObjects($value);
            }
        }
        elseif ( is_object($item) )
        {   
            if ( get_class($item) == "Element" || get_class($item) == "Resource" )
            {
                $item = $item->toString();
            }
        }
       
        return $item;
    }
   
    function do_post_request( $host, $port, $path, $json_data )
    {
        if ( $this->useCurl )
        {
            $ch = curl_init();  
            curl_setopt( $ch, CURLOPT_URL, "http://{$host}:{$port}{$path}" );
            curl_setopt( $ch, CURLOPT_POST, 1 );
            curl_setopt( $ch, CURLOPT_POSTFIELDS, $json_data );
            $result = curl_exec($ch);    
            curl_close($ch);
            return $result;
        }
        else
        {
            if ( !$fp = @fsockopen( $host, $port, $errno, $errstr, $this->sockTimeout ) )
            {
                throw new Exception( "Could not connect to {$host}:{$port}" );
            }
 
            $out = "POST {$path} HTTP/1.0\r\n";
            $out .= "Host: {$host}:{$port}\r\n";
           
            if ( $this->http_username && $this->http_password )
            {
                $out .= "Authorization: Basic " . base64_encode( "{$this->http_username}:{$this->http_password}" ) . "\r\n";
            }
           
            $out .= "Content-Length: " . strlen($json_data) . "\r\n";
            $out .= "Content-Type: application/x-www-form-urlencoded\r\n\r\n";
            //$out .= "Connection: close\r\n\r\n";
            $out .= $json_data . "\r\n\r\n";
           
            if ( !fputs( $fp, $out ) )
            {
                throw new Exception( "Unable to send request to {$host}:{$port}" );
            }
           
            @stream_set_timeout( $fp, $this->sockTimeout );
            $status = @socket_get_status($fp);
           
            $response = '';
           
            while ( !feof($fp) && !$status['timed_out'] )
            {
                $response .= fgets( $fp, 128 );
                $status = socket_get_status($fp);
            }
           
            fclose( $fp );
           
            $tmp = explode( "\r\n\r\n", $response, 2 );
            $headers = $tmp[0];
            $response = trim($tmp[1]);
           
            preg_match( "/HTTP\/1.(?:0|1)\s*([0-9]{3})/", $headers, $matches );
            $statusCode = intval($matches[1]);
           
            if ( $statusCode != 200 )
            {
                switch( $statusCode )
                {
                    case 401:
                        throw new Exception( "Access Denied. This server requires authentication. Please ensure that a valid username and password combination is provided." );
                    break;
                   
                    case 404:
                        throw new Exception( "There was a problem with the request. Ensure that the resource exists and that the name is spelled correctly." );
                    break;
                }
            }
           
            if ( preg_match( "/^error/i", $response ) )
            {
                throw new Exception( ucwords( preg_replace("/^error:?\s*/i", "", $response ) ) );
            }
           
            return $response;
        }
    }
}
 
class Element
{
    var $id;
 
    function Element($id)
    {
        $this->id = $id;
    }
 
    function toString()
    {
        return "^E^" . $this->id;
    }
}
 
 
class Resource
{
    var $name;
    private $server;
 
    function Resource($name, $server)
    {
        $this->name = $name;
        $this->server = $server;
    }
 
    function toString()
    {
        return "^R^" . $this->name;
    }
   
    public function getName()
    {
        return $this->name;
    }
   
    function call ( $function )
    {
       
        $val = array();
       
Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...