PHP 调用第三方API接口 、带参数跳转PHP

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: PHP 调用第三方API接口 、带参数跳转PHP

前排说重点:关键方法在context.php文件里,有关于第三方接口调用的方法 function  api_execute。 主要是在传递参数时,如果选择json格式传递,需要做相关处理; 然后在api_execute方法里,也需要做参数的相关格式设置。


首先是本地跑起一个java项目,模拟第三方接口的提供:


    @PostMapping("/testLogin")
    public Map test(@RequestBody Map mapData) {
        Map<String, String> map = new HashMap<>();
        System.out.println("获取的值:" + mapData.toString());
        if (mapData.get("username").equals("admin") && mapData.get("pwd").equals("123456")) {
            map.put("code", "200");
            map.put("data", "login success");
        }else {
            map.put("code", "-1");
            map.put("data", "login fail");
        }
        return map;
    }


OK,接下来是PHP相关代码:

显示目录结构:


image.png


场景流程:


buttonTest.php 模拟用户输入账户名和密码,点击按钮进行登录

buttonTest.php 带着参数触发context.php,将参数传递过去

context.php带着参数,调用方法去访问第三方接口API

第三方接口API收到参数后,做登录校验处理,返回参数

context.php 接收第三方接口API的参数,做逻辑处理(数据库写入等),带着结果参数跳转main.php


最后main.php对结果参数做处理


buttonTest.php:


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
</head>
<body>
<form method="post" action="context.php">
username: <input type="text" name="username">
pwd: <input type="text" name="pwd">
<input type="submit" value="login">
</form>
</bosy>
</html>


context.php:


<?php
   $username=$_POST["username"]; //传递过来的username
   $pwd=$_POST["pwd"];           //传递过来的pwd
   $data_json = array("username" => $username, "pwd" => $pwd);  //将参数拼接成json                                                                  
   $data = json_encode($data_json);  //模拟调用接登录接口参数
   $url="http://localhost:8088/testLogin";//模拟登录接口
   $method="POST";
   $result= api_execute($method,$url,$data);//获取接口返回值
   $result_json= json_decode($result, true);
   $code=$result_json['code'];
   $data=$result_json['data'];
   $mysql_result=user_insert();//调用user插入方法,保存用户信息
   echo "CODE: $code <br> 
   DATA: $data <br>";
   echo  "$mysql_result<br>AAA";
   if ($mysql_result="success") {
    $a1="login success,welcome to the mainHtml !";
     // require ("../studyDay/main.php");
    header('Location:http://localhost/studyDay/main.php?n='.$a1);
   }
//用户数据插入
   function user_insert(){
    $mysql_host = "localhost";
    $mysql_username = "root";
    $mysql_password = "root";
    $mysql_dbname = "discuztest";
// 创建连接
    $conn = new mysqli($mysql_host, $mysql_username, $mysql_password, $mysql_dbname);
// 检测连接
    if ($conn->connect_error) {
      die("连接失败: " . $conn->connect_error);
    } 
    $uid=10;
    $username="JCccc";
    $password="1223344";
      // $password="123456";
    $email="861122334@qq.com";
    $regip="127.0.0.1";
    $regdate="1567748889";
    $salt="9a170e";
    $sql = "INSERT INTO pre_ucenter_members (uid,username, password,email,regip,regdate,salt)
    VALUES ('$uid','$username', '$password','$email','$regip','$regdate','$salt')";
    if ($conn->query($sql) === TRUE) {
      return "success";
    } else {
      echo "Error: " . $sql . "<br>" . $conn->error;
      return "fail";
    }
    $conn->close();
   }
//api接口调用
   function api_execute($method, $url, $data = false) {
  $curl = curl_init();//初始化curl
  switch ($method)
  {
    case "POST":
    curl_setopt($curl, CURLOPT_POST, 1);
    if ($data)
      curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
    break;
    case "PUT":
    curl_setopt($curl, CURLOPT_PUT, 1);
    break;
    default:
    if ($data)
      $url = sprintf("%s?%s", $url, http_build_query($data));
  }
    // Optional Authentication:
  curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
  curl_setopt($curl, CURLOPT_URL, $url);
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($curl, CURLOPT_HTTPHEADER, array( /*设置请求头*/               
    'Content-Type: application/json',  
    'Content-Length: ' . strlen($data))           
);
  $result = curl_exec($curl);
  curl_close($curl); //关闭 curl
  return $result;
}   
?>


main.php:


<?php
   $a=$_REQUEST['n'];
   echo $a;
?>

 

测试结果:


image.png


数据库:


image.png


java第三方接口:


image.png

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
11天前
|
存储 消息中间件 前端开发
Web2py框架下的神秘力量:如何轻松集成第三方API,让你的应用不再孤单!
【8月更文挑战第31天】在开发现代Web应用时,常需集成第三方服务如支付网关、数据存储等。本文将指导你使用Web2py框架无缝接入第三方API。通过实例演示从注册获取API密钥、创建控制器、发送HTTP请求到处理响应的全过程。利用`requests`库与Web2py的内置功能,轻松实现API交互。文章详细介绍了如何编写RESTful控制器,处理API请求及响应,确保数据安全传输。通过本教程,你将学会如何高效整合第三方服务,拓展应用功能。欢迎留言交流心得与建议。
26 1
|
14天前
|
运维 Serverless API
函数计算产品使用问题之如何通过API传递ControlNet参数
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
20天前
|
测试技术 API
【API管理 APIM】如何查看APIM中的Request与Response详细信息,如Header,Body中的参数内容
【API管理 APIM】如何查看APIM中的Request与Response详细信息,如Header,Body中的参数内容
|
1月前
|
Java API 数据格式
Spring Boot API参数读取秘籍大公开!6大神器助你秒变参数处理大师,让你的代码飞起来!
【8月更文挑战第4天】Spring Boot凭借其便捷的开发和配置特性,成为构建微服务的热门选择。高效处理HTTP请求参数至关重要。本文介绍六种核心方法:查询参数利用`@RequestParam`;路径变量采用`@PathVariable`;请求体通过`@RequestBody`自动绑定;表单数据借助`@ModelAttribute`或`@RequestParam`;请求头使用`@RequestHeader`;Cookie则依靠`@CookieValue`。每种方法针对不同场景,灵活运用可提升应用性能与用户体验。
42 9
|
2月前
|
数据采集 DataWorks 测试技术
DataWorks产品使用合集之如何通过REST API进行数据采集,并且自定义传入API的参数
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
18天前
|
API Python
【Azure API 管理】API Management 访问限制策略[quota-by-key] 中参数 [renewal-period] 的实验和理解
【Azure API 管理】API Management 访问限制策略[quota-by-key] 中参数 [renewal-period] 的实验和理解
|
24天前
|
网络协议 API PHP
PhalApi:在宝塔一键安装部署PHP开源接口框架的教程
要在宝塔面板上一键安装部署PhalApi开源接口框架,首先进入宝塔软件商店,切换到“一键部署”选项,搜索“phalapi”并点击“一键部署”。安装时需填写接口域名、数据库名及密码,提交后等待安装完成。安装成功后可在宝塔面板中查看新站点和源代码目录,并通过DNS解析设置访问接口域名,如`http://myapi.phalapi.net/`。默认开启的调试模式便于测试,可通过修改`config/sys.php`中的`debug`值为`false`关闭。最后,在源代码中开发自己的PHP接口,PhalApi会自动生成在线接口文档,方便后续调用与维护。更多详细教程可参考官方文档。
|
26天前
|
监控 安全 测试技术
确保第三方API安全的5个最佳实践
确保第三方API安全的5个最佳实践
|
2月前
|
JSON API 数据格式
App Inventor 2 天气预报App开发 - 第三方API接入的通用方法
通过调用第三方天气api,填入必要的参数,通过Web客户端请求url。返回json格式的数据结果,使用AppInventor2解析json结果,显示到App上即可。
103 5
|
2月前
|
DataWorks 关系型数据库 MySQL
DataWorks操作报错合集之调用CreateQualityRule API时,BlockType参数为0,会报错:"blockType less than minimum",该怎么办
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。