【问题标题】:Send HTTP Post Request PHP发送 HTTP Post 请求 PHP
【发布时间】:2016-07-14 14:54:14
【问题描述】:

我尝试使用 Steam API 取消交易报价。在此之后:https://developer.valvesoftware.com/wiki/Steam_Web_API/IEconService#CancelTradeOffer_.28v1.29

我需要通过 HTTP Post 请求传递 tradeofferid。我做了这个,但交易不会取消:

    function RechazarOferta($tradeid)
{
    $data = array('tradeofferid' => $tradeid);
    $trade = array('tradeofferid' => $tradeid, 'language' => 'english');

    $url = 'https://api.steampowered.com/IEconService/CancelTradeOffer/v1/?key=C9786993763535D16XXXXXXXXX&'.http_build_query($trade);

    $c = curl_init();
    curl_setopt($c, CURLOPT_URL, $url);
    curl_setopt($c, CURLOPT_POST, 1);
    curl_setopt($c, CURLOPT_POSTFIELDS, $data);
    $return = curl_exec($c);
    curl_close($c);

    var_dump($return);
}

发出 HTTP Post 请求的任何解决方案或更好的形式?

【问题讨论】:

    标签: php api steam


    【解决方案1】:

    Curl 非常丑陋和陈旧。 试试Guzzle

    $client = new GuzzleHttp\Client();
    $res = $client->request('GET', 
       'https://api.steampowered.com/IEconService/CancelTradeOffer/v1', 
       ['query' => [
           'key' =>'C9786993763535D16XXXXXXXXX',
           'tradeofferid' => $tradeid, 
           'language' => 'english']
       ]
    );
    echo $res->getStatusCode();
    // "200"
    

    【讨论】:

      【解决方案2】:

      我用这个方法做的,请测试:

      $url = 'https://yourweb.com';
      $body = 'var1=1&var2=2';
      
      $result = get_data($url, $body);
      
      function get_data($url, $body)
      {
          //$userAgent = 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)';
          $ch      = curl_init();
          $timeout = 7;
      
          curl_setopt($ch, CURLOPT_URL, $url);
          curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
          curl_setopt($ch, CURLOPT_POSTFIELDS, $body);
          curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
          //curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
          curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
          //curl_setopt($ch, CURLOPT_USERAGENT, $userAgent);
          $data = curl_exec($ch);
          curl_close($ch);
          return $data;
      }
      

      【讨论】:

      • 您好,感谢您的回复。这不起作用,它们返回的结果与我的函数相同,只有一个“响应:”。
      • 嗨,我更新了支持 https 的答案,只复制了 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-13
      • 2016-04-08
      • 2018-07-07
      • 2016-07-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多