PHP客户端向服务器端发送请求并向远程服务器发送服务器端请求

时间:2015-11-25 04:17:57

标签: php post curl

我的方案如下:

  1. 单击按钮时,客户端将向服务器端发送请求
  2. 一旦服务器端收到请求,它将向远程服务器发送另一个请求以获得结果
  3. 一旦响应到来,服务器端应该回应客户端的响应。
  4. 客户端

    $.post('login_server.php'{act:"post",phone:phone,passwords:passwords},function(e){
          alert(e);
        },'json');
    

    服务器

    $act = isset($_POST["act"]) ? $_POST["act"] : "default";
    if($act == "default"){
        var_dump(123123);
    }elseif($act == "post"){
        $phone = $_POST["phone"];
        $password = md5($_POST["passwords"]);
        $data_array = array('phone' => $phone,'password' =>$password );
        $jsonStr = json_encode($data_array);
        $url = "http://xx.xx.xx.xx/xxxx/userinfo/login";
        $data = http_post_json($url, $jsonStr); 
        echo json_encode(123);  
    }
    
    function http_post_json($url, $jsonStr)
    {
      $ch = curl_init();
      curl_setopt($ch, CURLOPT_POST, 1);
      curl_setopt($ch, CURLOPT_URL, $url);
      curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonStr);
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
      curl_setopt($ch, CURLOPT_HTTPHEADER, array(
                          'Content-Type: application/json; charset=utf-8',
                          'Content-Length: ' . strlen($jsonStr)
                    )
                );
      $response = curl_exec($ch);
      $abc = json_encode($response);
      $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
      return array($httpCode, $response);
    }
    

    我检查了login_server。它可以从远程服务器获取响应。但是如果我添加

    $response = curl_exec($ch);
    回调函数不起作用。

    有没有人知道这个?

    的BRs 戴蒙

1 个答案:

答案 0 :(得分:1)

这不起作用,因为您对数组进行编码。

$jsonStr = json_encode($data_array);

试试

curl_setopt($ch, CURLOPT_POSTFIELDS, $data_array);

在这里,你需要获得'json'并在你的页面上解码。

curl_setopt($ch, CURLOPT_POSTFIELDS, 'json='.$jsonStr);

http://php.net/manual/en/function.curl-setopt.php