1

私は海の足を手に入れており、いくつかのポインターと、epp サーバーに接続するコードの小さなサンプルが必要です。コードのサンプルは、ログインして 1 つのコマンドを送信し、応答を受信する必要があります (XML 形式)。コードは php または python にすることができます。

これは、私がこのトピックについてさらに掘り下げて学ぶための基礎/キックスタートを形成すると信じています. それは私を壁に押し上げています-良い意味で、1日または1000日で解決したいと思っています.

そして、私は何日も検索してきましたが、見つかった情報を理解できないようで、ここでガイダンスを求めることにしました.

前もって感謝します。

4

1 に答える 1

1

これはサンプルphpスクリプトです

<?php


class Epp 
{

var $socket;

public function __construct()
{
}


private $_connected = false;

function connect($host, $port = 700, $timeout = 1, $ssl = true)
{
    if ($this->_connected)
        return true;
    $target = sprintf('%s://%s', ($ssl === true ? 'ssl' : 'tcp'), $host);
    $socket = fsockopen($target, $port, $errno, $errstr, $timeout);
    if (!$socket) {
        return new PEAR_Error("Error connecting to $target: $errstr (code $errno)");
    } else {
        $this->socket = $socket;
        $this->_connected = true;
        return $this->getFrame();
    }
}


function getFrame()
{
    if (feof($this->socket))
        return new PEAR_Error("Connection appears to have closed.");
    $hdr = @fread($this->socket, 4);
    if (empty($hdr)) {
        return new PEAR_Error("Error reading from server: $php_errormsg");
    } else {
        $unpacked = unpack('N', $hdr);
        $answer = fread($this->socket, ($unpacked[1] - 4));
        return $answer;
    }
}

function sendFrame($xml)
{
    return @fwrite($this->socket, pack('N', (strlen($xml) + 4)) . $xml);
}

function disconnect()
{
    return @fclose($this->socket);
}

}

?>

また、connect、getFrame、sendFrame、disconnect の 4 つの関数があります。Epp プロトコルは次のように動作します。まず、サーバーに接続する必要があります。

サーバーに xml 要求を送信し、サーバーから xml 応答を受信します。

まず、サーバーにログインする必要があります。そのためには、ログイン xml をサーバーに送信する必要があります。

&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0
      epp-1.0.xsd">
    <command>
        <login>
            <clID><?php echo $username;?></clID>
            <pw><?php echo $password;?></pw>
            <options>
                <version>1.0</version>
                <lang>en</lang>
            </options>
            <svcs>
                <svcExtension>

                </svcExtension>
            </svcs>
        </login>
        <clTRID>12345</clTRID>
    </command>
</epp>

すべてのリクエストとレスポンスは xml です。そして、このサイトから xml を見つけることができます https://www.rfc-editor.org/rfc/rfc5732

于 2013-03-28T09:11:55.120 に答える