关于我用PHP实现请求模拟的一件趣事!

藏色散人
发布: 2022-10-26 17:19:23
转载
4567人浏览过

下面由php教程栏目给大家介绍关于实现php请求模拟的一件趣事,希望对大家有所帮助!

通过简单实现 PHP 请求模拟赚了 50 元

这个周末发生了一件有趣的事情:在群里看到有人需要做 PHP 开发的协助,并承诺有报酬,我自荐后解决了问题,获得了 50 元。

接下来我详细的说说整个事情的经过。

周六下班后打开了 QQ,在浏览群消息的时候看到这样一句话:“群里有没有会写 PHP 代码的,有偿”。我立马添加他的 QQ,并告诉他我是做 PHP 开发的,我可以提供帮助。

立即学习PHP免费学习笔记(深入)”;

周日早上收到了他的回复,他给了我一个文档,让我看看是否能实现,我仔细浏览了整个文档,发现是第三方接口文档,我告诉他对接这种接口很简单,想知道他的具体业务是什么,而他告诉我只需要帮忙调通就行,以下是我们的对话截图:

966c8d43b730d139bf13718f46af9fc.jpg

976bd7470524e0555f880027b70dcfc.jpg

虽然他出的钱并不多,但是当时我恰好没有什么事情,就接了,我拷贝了之前写的代码,然后再改一下,很快就调通了,截图给他看,他确认没有问题后给我发了 50 元的红包,我也把文件发给他了,整个事情就结束了。

接下来我要说的是这个事情背后的技术问题。

首先他是懂 PHP 开发的,是在开发中遇到了难题,不知道是他懒得去搜索还是没有搜索到解决方案,而这个难题实际上就是一个 PHP 实现请求模拟的小问题。

现在我把整个文件代码分享出来,希望对遇到同样问题的人有一些帮助,实现代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

<?php

class HttpClientUtil

{

    public function sendRequest($type = '', $url = '', $data = [], $timeout = 60)

    {

        try {

            $type = strtoupper($type);

            $curl = curl_init();

            curl_setopt($curl, CURLOPT_URL, $url);//设置请求链接

            curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);//不直接输出页面

            curl_setopt($curl, CURLOPT_HEADER, 0);//获取响应头向下

            curl_setopt($curl, CURLOPT_TIMEOUT, $timeout);   //请求超时时间,单位:秒

            curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1');

            if (substr($url, 0, 5) == 'https') { //自动判断是否是https提交

                curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);  // https请求 不验证证书和hosts

                curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);

            }

            curl_setopt($curl, CURLOPT_HTTPHEADER, ['Content-Type:application/json']);

            switch ($type) {

                case "GET" :

                    curl_setopt($curl, CURLOPT_HTTPGET, true);

                    break;

                case "POST":

                    curl_setopt($curl, CURLOPT_POST, true);

                    curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data));

                    break;

                case "PUT" :

                    curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "PUT");

                    curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data));

                    break;

                case "DELETE":

                    curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "DELETE");

                    curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data));

                    break;

            }

            $result = curl_exec($curl);

            $err_code = curl_errno($curl);

            $curlInfo = curl_getinfo($curl);

            curl_close($curl);

            if ($err_code) {

                return false;

            }

            if ($curlInfo['http_code'] == 200) { //只有200状态才返回数据

                return json_decode($result, true);

            }

            return false;

        } catch (\Exception $e) {

            throw new \Exception($e->getMessage());

        }

    }

    public function createSign($data){

        // 拼接

        $dataStr = '';

        foreach ($data as $key=>$value){

            $dataStr.="{$key}={$value}&";

        }

        // 拼接商户密钥

        $dataStr.='access_token=***B8';

        // 加密

        $sign =strtoupper(MD5($dataStr));

        $data['sign']=$sign;

        return $data;

    }

}

$api = new HttpClientUtil();

$url = 'http://***/order/pay';

$data=[

    'userName'=>'test',

    'version'=>'2.0',

    'cardName'=>'张三',

    'cardNum'=>'20932402940189310293',

    'openBank'=>'招商银行',

    'amount'=>'10.00',

    'outOrderId'=>'JD123123123',

    'returnUrl'=>'/',

];

$res = $api->sendRequest('post',$url,$api->createSign($data));

print_r($res);

登录后复制

推荐学习:《PHP视频教程

以上就是关于我用PHP实现请求模拟的一件趣事!的详细内容,更多请关注php中文网其它相关文章!

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
相关标签:
来源:learnku网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号