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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 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
相关文章
|
8天前
|
Java API PHP
阿里巴巴参数获取API
阿里巴巴的参数获取API流程包括:1. 注册并认证开发者账号;2. 创建应用,获取API密钥;3. 阅读API文档,了解请求参数和返回格式;4. 编写代码调用API,如使用Python请求商品详情;5. 注意API类型及其参数,遵守数据使用规则和法律法规。
|
7天前
|
供应链 数据挖掘 API
电商API接口介绍——sku接口概述
商品SKU(Stock Keeping Unit)接口是电商API接口中的一种,专门用于获取商品的SKU信息。SKU是库存量单位,用于区分同一商品的不同规格、颜色、尺寸等属性。通过商品SKU接口,开发者可以获取商品的SKU列表、SKU属性、库存数量等详细信息。
|
8天前
|
JSON API 数据格式
店铺所有商品列表接口json数据格式示例(API接口)
当然,以下是一个示例的JSON数据格式,用于表示一个店铺所有商品列表的API接口响应
|
14天前
|
缓存 负载均衡 API
抖音抖店API请求获取宝贝详情数据、原价、销量、主图等参数可支持高并发调用接入演示
这是一个使用Python编写的示例代码,用于从抖音抖店API获取商品详情,包括原价、销量和主图等信息。示例展示了如何构建请求、处理响应及提取所需数据。针对高并发场景,建议采用缓存、限流、负载均衡、异步处理及代码优化等策略,以提升性能和稳定性。
|
18天前
|
编解码 监控 API
直播源怎么调用api接口
调用直播源的API接口涉及开通服务、添加域名、获取API密钥、调用API接口、生成推流和拉流地址、配置直播源、开始直播、监控管理及停止直播等步骤。不同云服务平台的具体操作略有差异,但整体流程简单易懂。
|
2月前
|
Java PHP 数据安全/隐私保护
PHP 面向对象,构造函数,析构函数,继承,方法的重写,接口抽象类,static,final,this,parent,self的异同和作用
本文详细介绍了PHP面向对象编程的一系列核心概念和用法,包括构造函数、析构函数、继承、方法重写、访问控制、接口、抽象类、静态成员、final关键字、以及this、self、parent这三个关键字的异同和作用。通过具体示例代码,展示了如何在PHP中使用这些面向对象的特性,以及它们在实际开发中的应用。
PHP 面向对象,构造函数,析构函数,继承,方法的重写,接口抽象类,static,final,this,parent,self的异同和作用
|
1月前
|
人工智能 自然语言处理 PyTorch
Text2Video Huggingface Pipeline 文生视频接口和文生视频论文API
文生视频是AI领域热点,很多文生视频的大模型都是基于 Huggingface的 diffusers的text to video的pipeline来开发。国内外也有非常多的优秀产品如Runway AI、Pika AI 、可灵King AI、通义千问、智谱的文生视频模型等等。为了方便调用,这篇博客也尝试了使用 PyPI的text2video的python库的Wrapper类进行调用,下面会给大家介绍一下Huggingface Text to Video Pipeline的调用方式以及使用通用的text2video的python库调用方式。
|
1月前
|
JavaScript API
|
8天前
|
JSON 前端开发 JavaScript
API接口商品详情接口数据解析
商品详情接口通常用于提供特定商品的详细信息,这些信息比商品列表接口中的信息更加详细和全面。以下是一个示例的JSON数据格式,用于表示一个商品详情API接口的响应。这个示例假定API返回一个包含商品详细信息的对象。
|
30天前
|
JSON JavaScript API
(API接口系列)商品详情数据封装接口json数据格式分析
在成长的路上,我们都是同行者。这篇关于商品详情API接口的文章,希望能帮助到您。期待与您继续分享更多API接口的知识,请记得关注Anzexi58哦!