当前位置:   article > 正文

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

php调用第三方api接口

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


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

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

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

显示目录结构:

场景流程:
buttonTest.php 模拟用户输入账户名和密码,点击按钮进行登录
buttonTest.php 带着参数触发context.php,将参数传递过去
context.php带着参数,调用方法去访问第三方接口API
第三方接口API收到参数后,做登录校验处理,返回参数
context.php 接收第三方接口API的参数,做逻辑处理(数据库写入等),带着结果参数跳转main.php

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


buttonTest.php:

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <html>
  3. <head>
  4. </head>
  5. <body>
  6. <form method="post" action="context.php">
  7. username: <input type="text" name="username">
  8. pwd: <input type="text" name="pwd">
  9. <input type="submit" value="login">
  10. </form>
  11. </bosy>
  12. </html>


context.php:

  1. <?php
  2. $username=$_POST["username"]; //传递过来的username
  3. $pwd=$_POST["pwd"]; //传递过来的pwd
  4. $data_json = array("username" => $username, "pwd" => $pwd); //将参数拼接成json
  5. $data = json_encode($data_json); //模拟调用接登录接口参数
  6. $url="http://localhost:8088/testLogin";//模拟登录接口
  7. $method="POST";
  8. $result= api_execute($method,$url,$data);//获取接口返回值
  9. $result_json= json_decode($result, true);
  10. $code=$result_json['code'];
  11. $data=$result_json['data'];
  12. $mysql_result=user_insert();//调用user插入方法,保存用户信息
  13. echo "CODE: $code <br>
  14. DATA: $data <br>";
  15. echo "$mysql_result<br>AAA";
  16. if ($mysql_result="success") {
  17. $a1="login success,welcome to the mainHtml !";
  18. // require ("../studyDay/main.php");
  19. header('Location:http://localhost/studyDay/main.php?n='.$a1);
  20. }
  21. //用户数据插入
  22. function user_insert(){
  23. $mysql_host = "localhost";
  24. $mysql_username = "root";
  25. $mysql_password = "root";
  26. $mysql_dbname = "discuztest";
  27. // 创建连接
  28. $conn = new mysqli($mysql_host, $mysql_username, $mysql_password, $mysql_dbname);
  29. // 检测连接
  30. if ($conn->connect_error) {
  31. die("连接失败: " . $conn->connect_error);
  32. }
  33. $uid=10;
  34. $username="JCccc";
  35. $password="1223344";
  36. // $password="123456";
  37. $email="861122334@qq.com";
  38. $regip="127.0.0.1";
  39. $regdate="1567748889";
  40. $salt="9a170e";
  41. $sql = "INSERT INTO pre_ucenter_members (uid,username, password,email,regip,regdate,salt)
  42. VALUES ('$uid','$username', '$password','$email','$regip','$regdate','$salt')";
  43. if ($conn->query($sql) === TRUE) {
  44. return "success";
  45. } else {
  46. echo "Error: " . $sql . "<br>" . $conn->error;
  47. return "fail";
  48. }
  49. $conn->close();
  50. }
  51. //api接口调用
  52. function api_execute($method, $url, $data = false) {
  53. $curl = curl_init();//初始化curl
  54. switch ($method)
  55. {
  56. case "POST":
  57. curl_setopt($curl, CURLOPT_POST, 1);
  58. if ($data)
  59. curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
  60. break;
  61. case "PUT":
  62. curl_setopt($curl, CURLOPT_PUT, 1);
  63. break;
  64. default:
  65. if ($data)
  66. $url = sprintf("%s?%s", $url, http_build_query($data));
  67. }
  68. // Optional Authentication:
  69. curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
  70. curl_setopt($curl, CURLOPT_URL, $url);
  71. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  72. curl_setopt($curl, CURLOPT_HTTPHEADER, array( /*设置请求头*/
  73. 'Content-Type: application/json',
  74. 'Content-Length: ' . strlen($data))
  75. );
  76. $result = curl_exec($curl);
  77. curl_close($curl); //关闭 curl
  78. return $result;
  79. }
  80. ?>

main.php:

  1. <?php
  2. $a=$_REQUEST['n'];
  3. echo $a;
  4. ?>


 测试结果:



数据库: 

java第三方接口:

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/270148
推荐阅读
相关标签
  

闽ICP备14008679号