PHP를 사용한 요청 시뮬레이션에 대한 흥미로운 점!

藏色散人
풀어 주다: 2023-04-11 08:20:01
앞으로
4504명이 탐색했습니다.

다음은 PHP 튜토리얼 칼럼에서 PHP 요청 시뮬레이션 구현에 관한 흥미로운 내용입니다. 도움이 되셨으면 좋겠습니다!

PHP 요청 시뮬레이션을 구현하여 50위안을 벌었습니다

이번 주말에 흥미로운 일이 일어났습니다. 그룹에서 PHP 개발에 도움이 필요한 사람을 보고 제가 직접 추천하고 문제를 해결했습니다. 50위안을 받았습니다.

다음으로 전반적인 내용을 자세히 말씀드리겠습니다.

토요일 퇴근 후 QQ를 열었는데, 그룹 메시지를 보다가 "그룹에 PHP 코드를 작성할 수 있는 사람이 있나요, 유료입니다."라는 문장을 봤습니다. 나는 즉시 그의 QQ를 추가하고 내가 PHP 개발을 하고 있으니 도와줄 수 있다고 말했습니다.

일요일 아침에 그의 답변을 받았습니다. 그는 나에게 문서를 주면서 그것이 구현될 수 있는지 물어봤습니다. 나는 전체 문서를 주의 깊게 찾아본 결과 그것이 제3자 인터페이스 문서라는 것을 그에게 말했습니다. 이 인터페이스를 연결하는 것은 매우 간단했습니다. 저는 그의 구체적인 사업이 무엇인지 알고 싶었고 그는 단지 도움이 필요하다고 말했습니다. 다음은 우리 대화의 스크린샷입니다.

PHP를 사용한 요청 시뮬레이션에 대한 흥미로운 점!

PHP를 사용한 요청 시뮬레이션에 대한 흥미로운 점!

그는 돈이 제안된 내용이 별로 없어서 당시에 문제가 있어서 가져와서 예전에 작성한 코드를 복사해서 수정했습니다. 문제 없습니다. 그는 나에게 50위안짜리 빨간 봉투를 보냈습니다. 나도 그에게 파일을 보냈고 모든 것이 끝났습니다.

다음으로 이야기하고 싶은 것은 이 문제의 기술적 문제입니다.

우선, 그는 PHP 개발을 이해하고 있습니다. 그는 개발 중에 문제에 직면했습니다. 너무 게을러서 해결책을 찾지 못한 것인지는 모르겠습니다. 이 문제는 실제로 PHP의 요청 시뮬레이션에서 발생한 작은 문제였습니다. .

이제 동일한 문제를 겪는 사람들에게 도움이 되기를 바라며 전체 파일 코드를 공유합니다. 구현 코드:

<?php
class HttpClientUtil
{
    public function sendRequest($type = &#39;&#39;, $url = &#39;&#39;, $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, &#39;Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1&#39;);
            if (substr($url, 0, 5) == &#39;https&#39;) { //自动判断是否是https提交
                curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);  // https请求 不验证证书和hosts
                curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
            }
            curl_setopt($curl, CURLOPT_HTTPHEADER, [&#39;Content-Type:application/json&#39;]);
            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[&#39;http_code&#39;] == 200) { //只有200状态才返回数据
                return json_decode($result, true);
            }
            return false;
        } catch (\Exception $e) {
            throw new \Exception($e->getMessage());
        }
    }
    public function createSign($data){
        // 拼接
        $dataStr = &#39;&#39;;
        foreach ($data as $key=>$value){
            $dataStr.="{$key}={$value}&";
        }
        // 拼接商户密钥
        $dataStr.=&#39;access_token=***B8&#39;;
        // 加密
        $sign =strtoupper(MD5($dataStr));
        $data[&#39;sign&#39;]=$sign;
        return $data;
    }
}
$api = new HttpClientUtil();
$url = &#39;http://***/order/pay&#39;;
$data=[
    &#39;userName&#39;=>&#39;test&#39;,
    &#39;version&#39;=>&#39;2.0&#39;,
    &#39;cardName&#39;=>&#39;张三&#39;,
    &#39;cardNum&#39;=>&#39;20932402940189310293&#39;,
    &#39;openBank&#39;=>&#39;招商银行&#39;,
    &#39;amount&#39;=>&#39;10.00&#39;,
    &#39;outOrderId&#39;=>&#39;JD123123123&#39;,
    &#39;returnUrl&#39;=>&#39;/&#39;,
];
$res = $api->sendRequest(&#39;post&#39;,$url,$api->createSign($data));
print_r($res);
로그인 후 복사

추천 학습: "PHP 비디오 튜토리얼"

위 내용은 PHP를 사용한 요청 시뮬레이션에 대한 흥미로운 점!의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
php
원천:learnku.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!