«
PHP中Post请求

时间:2022-1-13    作者:Deri    分类: PHP


先构造数据,再POST

$jsonStr = json_encode(
    array(
        "action" => "$action",
        "appId" => "$app_id",
        "bizContent" => array(
            "activityId" => "$activityId",
            "transactionId" => "$transactionId"
            ),
        "version" => "$version"
        )
    );

echo "请求参数<br>";

print_r($jsonStr);
echo "<br><br>";

echo "返回结果<BR>";
$Rjson=http_post_json($url, $jsonStr);
print_r($Rjson);
}

/**
 * PHP发送Json对象数据
 *
 * @param $url 请求url
 * @param $jsonStr 发送的json字符串
 * @return array
 */
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);
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    return array($httpCode, $response);
}

另一种方式:

$url="http://xxxxxxxxx";
$ctime=date("Y-m-d H:i:s");
$cval="{'nurse_type':'powder','nurse_ml':'120'}";
$data=array(
    "ctime"=>$ctime,
    "bb"=>"doudou",
    "ctype"=>"nurse",
    "cuser"=>"UU",
    "cfrom"=>"Light",
    "cval"=>$cval
);
$BabyRes=postCurl($url,$data);

function postCurl($url,$data){
  /**
  if($type == 'json'){
      $data = json_encode($data);//对数组进行json编码
      $header= array("content-type: application/x-www-form-urlencoded; charset=UTF-8");
  }
  **/
  $curl = curl_init();
  curl_setopt($curl,CURLOPT_URL,$url);
  curl_setopt($curl,CURLOPT_POST,1);
  curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,false);
  curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,false);
  if(!empty($data)){
      curl_setopt($curl,CURLOPT_POSTFIELDS,$data);
  }
  curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);
  //curl_setopt($curl,CURLOPT_HTTPHEADER,$header);
  $res = curl_exec($curl);
  if(curl_errno($curl)){
      echo 'Error+'.curl_error($curl);
  }
  curl_close($curl);
  return $res;
}

标签: PHP POST HTTP