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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
云数据库 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

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
23天前
|
JSON API 数据格式
淘宝商品评论API接口,json数据示例参考
淘宝开放平台提供了多种API接口来获取商品评论数据,其中taobao.item.reviews.get是一个常用的接口,用于获取指定商品的评论信息。以下是关于该接口的详细介绍和使用方法:
|
3月前
|
自动驾驶 程序员 API
告别重复繁琐!Apipost参数描述库让API开发效率飙升!
在API开发中,重复录入参数占用了42%的时间,不仅效率低下还易出错。Apipost推出的参数描述库解决了这一痛点,通过智能记忆功能实现参数自动填充,如版本号、分页控制、用户信息等常用字段,大幅减少手动输入。支持Key-Value与Raw-Json格式导入,一键提取响应结果至文档,将创建20参数接口文档时间从18分钟缩短至2分钟。相比Postman需手动搜索变量,Apipost的参数复用响应速度仅0.3秒,且支持跨项目共享与实时纠错,真正实现“一次定义,终身受益”。
|
3月前
|
JSON 数据挖掘 API
1688API最新指南:商品详情接口接入与应用
本指南介绍1688商品详情接口的接入与应用,该接口可获取商品标题、价格、规格、库存等详细信息,适用于电商平台开发、数据分析等场景。接口通过商品唯一标识查询,支持HTTP GET/POST请求,返回JSON格式数据,助力开发者高效利用1688海量商品资源。
|
3月前
|
JSON 数据挖掘 API
京东API接口最新指南:店铺所有商品接口的接入与使用
本文介绍京东店铺商品数据接口的应用与功能。通过该接口,商家可自动化获取店铺内所有商品的详细信息,包括基本信息、销售数据及库存状态等,为营销策略制定提供数据支持。此接口采用HTTP请求(GET/POST),需携带店铺ID和授权令牌等参数,返回JSON格式数据,便于解析处理。这对于电商运营、数据分析及竞品研究具有重要价值。
|
4月前
|
存储 供应链 监控
1688商品数据实战:API搜索接口开发与供应链分析应用
本文详细介绍了如何通过1688开放API实现商品数据的获取与应用,涵盖接入准备、签名流程、数据解析存储及商业化场景。开发者可完成智能选品、价格监控和供应商评级等功能,同时提供代码示例与问题解决方案,确保法律合规与数据安全。适合企业开发者快速构建供应链管理系统。
|
1月前
|
监控 容灾 测试技术
第三方API的稳定性如何保障?
第三方API的稳定性对电商至关重要,直接影响业务连续性和用户体验。为确保稳定,可采取以下措施:选择可靠提供商、评估技术架构高可用性、实现限流重试机制、实时监控预警、充分测试、优化网络连接、使用API网关、保持与提供商沟通、制定应急预案及定期评估改进。这些方法能有效提升API稳定性,保障业务高效运行和用户满意度。
50 0
|
3月前
|
JSON 监控 API
1688 商品列表 API 深度拆解:从参数配置到数据获取
1688 是重要的批发采购平台,其商品列表 API 接口为开发者、商家和数据分析人员提供批量获取商品基础信息(如名称、价格、销量等)的能力。该接口支持市场调研、竞品分析等场景,助力商业决策与效率提升。接口基于 HTTPS 协议,采用 GET 或 POST 请求方式,需提供通用参数(如 app_key、timestamp 等)和业务参数(如 category_id、page_no 等)。响应数据以 JSON 格式返回,包含商品详情及分页信息。
129 13
|
1月前
|
运维 数据挖掘 API
官方api和第三方api有什么区别
官方API与第三方API是电商商家常用的两种接口类型。官方API由电商平台提供,功能全面、集成度高、安全性强且稳定性好,适合处理核心业务;而第三方API由外部服务商提供,专注特定功能如支付、物流等,灵活性和扩展性更强,但安全性和稳定性参差不齐。商家应根据自身需求、预算及技术能力选择合适的API,确保数据安全与合规性,同时优化运营流程、提升用户体验并拓展业务功能,在竞争中占据优势。
64 0
|
1月前
|
JSON 供应链 API
1688 买家订单,订单物流,订单回传接口系列(1688 寻源通 API)
1688寻源通API为开发者提供买家订单、订单物流及订单回传三大接口,助力企业实现订单管理、物流跟踪与信息反馈的自动化。买家订单接口可查询订单详情;订单物流接口支持实时跟踪物流状态;订单回传接口确保企业系统与平台数据同步。结合Python示例代码,企业可轻松集成这些功能,优化内部管理、提升客户体验并支持数据驱动决策。适用于电商订单管理、物流服务和数据分析等场景。
|
3月前
|
JSON API 开发者
京东API最新指南:商品视频接口接入与应用
在电商领域,商品视频能有效提升销售业绩。京东商品视频接口助力开发者获取商品视频信息(播放链接、时长、格式、封面图等),通过 HTTP GET/POST 请求返回 JSON 数据,便于集成到各类应用中,优化展示效果与用户体验。本指南详解接口接入与使用方法。