关于将PHP代码转换为C# [英] regarding converting php code to c#

查看:56
本文介绍了关于将PHP代码转换为C#的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何在c#中编写此代码:

How can i write this code in c#:

<?php

class RestRequest
{
    protected $url;
    protected $verb;
    protected $requestBody;
    protected $requestLength;
    protected $username;
    protected $password;
    protected $acceptType;
    protected $contentType;
    protected $responseBody;
    protected $responseInfo;

    public function __construct ($url = null, $verb = 'GET', $requestBody = null)
    {
        $this->url              = $url;
        $this->verb             = $verb;
        $this->requestBody      = $requestBody;
        $this->requestLength    = 0;
        $this->username         = null;
        $this->password         = null;
        $this->acceptType       = 'application/json';
        $this->contentType      = 'application/json';
        $this->responseBody     = null;
        $this->responseInfo     = null;

        if ($this->requestBody !== null)
        {
            $this->buildPostBody();
        }
    }

    public function flush ()
    {
        $this->requestBody      = null;
        $this->requestLength    = 0;
        $this->verb             = 'GET';
        $this->responseBody     = null;
        $this->responseInfo     = null;
    }

    public function execute ()
    {
        $ch = curl_init();
        $this->setAuth($ch);

        try
        {
            switch (strtoupper($this->verb))
            {
                case 'GET':
                    $this->executeGet($ch);
                    break;
                case 'POST':
                    $this->executePost($ch);
                    break;
                case 'PUT':
                    $this->executePut($ch);
                    break;
                case 'DELETE':
                    $this->executeDelete($ch);
                    break;
                default:
                    throw new InvalidArgumentException('Current verb (' . $this->verb . ') is an invalid REST verb.');
            }
        }
        catch (InvalidArgumentException $e)
        {
            curl_close($ch);
            throw $e;
        }
        catch (Exception $e)
        {
            curl_close($ch);
            throw $e;
        }

    }

    public function buildPostBody ($data = null)
    {

        $data = ($data !== null) ? $data : $this->requestBody;

        /*
        if (!is_array($data))
        {
            throw new InvalidArgumentException('Invalid data input for postBody.  Array expected');
        }

        $data = http_build_query($data, '', '&');
        $this->requestBody = $data;
        */

        $this->requestBody = json_encode($data);


    }

    protected function executeGet ($ch)
    {
        $this->doExecute($ch);
    }

    protected function executePost ($ch)
    {
        if (!is_string($this->requestBody))
        {
            $this->buildPostBody();
        }

        curl_setopt($ch, CURLOPT_POSTFIELDS, $this->requestBody);
        curl_setopt($ch, CURLOPT_POST, 1);

        $this->doExecute($ch);
    }

    protected function executePut ($ch)
    {
        if (!is_string($this->requestBody))
        {
            $this->buildPostBody();
        }

        $this->requestLength = strlen($this->requestBody);

        //$fh = fopen('php://memory', 'rw');
        $fh = fopen('php://temp', 'rw');
        fwrite($fh, $this->requestBody);
        rewind($fh);

        curl_setopt($ch, CURLOPT_INFILE, $fh);
        curl_setopt($ch, CURLOPT_INFILESIZE, $this->requestLength);
        curl_setopt($ch, CURLOPT_PUT, true);

        $this->doExecute($ch);

        fclose($fh);
    }

    protected function executeDelete ($ch)
    {
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');

        $this->doExecute($ch);
    }

    protected function doExecute (&$curlHandle)
    {
        $this->setCurlOpts($curlHandle);
        $this->responseBody = curl_exec($curlHandle);
        $this->responseInfo = curl_getinfo($curlHandle);

        curl_close($curlHandle);
    }

    protected function setCurlOpts (&$curlHandle)
    {
        curl_setopt($curlHandle, CURLOPT_TIMEOUT, 10);
        curl_setopt($curlHandle, CURLOPT_URL, $this->url);
        curl_setopt($curlHandle, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($curlHandle, CURLOPT_HTTPHEADER, array ('Accept: ' . $this->acceptType));
        curl_setopt($curlHandle, CURLOPT_HTTPHEADER, array('Content-Type: ' . $this->contentType));
    }

    protected function setAuth (&$curlHandle)
    {
        if ($this->username !== null && $this->password !== null)
        {
            curl_setopt($curlHandle, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST);
            curl_setopt($curlHandle, CURLOPT_USERPWD, $this->username . ':' . $this->password);
        }
    }

    public function getAcceptType ()
    {
        return $this->acceptType;
    }

    public function setAcceptType ($acceptType)
    {
        $this->acceptType = $acceptType;
    }

    public function getPassword ()
    {
        return $this->password;
    }

    public function setPassword ($password)
    {
        $this->password = $password;
    }

    public function getResponseBody ()
    {
        return $this->responseBody;
    }

    public function getResponseInfo ()
    {
        return $this->responseInfo;
    }

    public function getUrl ()
    {
        return $this->url;
    }

    public function setUrl ($url)
    {
        $this->url = $url;
    }

    public function getUsername ()
    {
        return $this->username;
    }

    public function setUsername ($username)
    {
        $this->username = $username;
    }

    public function getVerb ()
    {
        return $this->verb;
    }

    public function setVerb ($verb)
    {
        $this->verb = $verb;
    }
}


//$request = new RestRequest('http://example.com/api/user/1', 'GET');
//$request = new RestRequest('http://localhost/api/user/1', 'GET');
$data = array (
                "first_name" => "XYZ",
                "last_name" => "ABC"
                );
$data1 = array (
                "username" => "sourav",
                "password" => "1234"
                );
//$request = new RestRequest('http://localhost/api/user/1', 'POST', $data);
//$request = new RestRequest('http://localhost/', 'GET', $data);
//$request = new RestRequest('http://localhost/users/1', 'GET', $data);
//$request = new RestRequest('http://localhost/sourav', 'GET', $data);
//$request = new RestRequest('http://localhost/login', 'POST', $data1);
//$request = new RestRequest('http://localhost/users/1', 'PUT', $data);
//$request = new RestRequest('http://localhost/users', 'POST', $data1);
//$request = new RestRequest('http://localhost/users/10', 'DELETE', $data1);


//$request = new RestRequest('http://localhost/sourav', 'GET', $data);
//file_put_contents('./sourav.txt', json_encode($data1));
$request = new RestRequest('http://localhost/users', 'POST', $data1);


$request->execute();

echo '<pre>' . print_r($request, true) . '</pre>';

?>

推荐答案

url; 受保护的
url; protected


动词; 受保护的


requestBody; 受保护的
requestBody; protected


这篇关于关于将PHP代码转换为C#的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆