次の PHP チュートリアル コラムでは、PHP リクエスト シミュレーションの実装に関する興味深い内容を紹介します。
PHP リクエスト シミュレーションを実装するだけで 50 元を獲得しました
今週末、興味深いことが起こりました。グループの中に PHP 開発の支援を必要としている人を見かけ、約束しました。自己推薦で問題を解き、50元を受け取りました。
次に、全体について詳しく説明します。
土曜日に仕事を終えた後、QQ を開き、グループ メッセージを閲覧しているときに、次の文を見つけました。「グループ内に、無料で PHP コードを書ける人はいますか?」私はすぐに彼の QQ を追加し、PHP 開発を行っているので手伝うことができると伝えました。
日曜日の朝に彼から返事を受け取りました。彼は私に文書を渡し、それが実装できるかどうか確認するように求めました。文書全体を注意深く閲覧したところ、それがサードパーティのインターフェース文書であることがわかりました。私はこう言いました。この種のドキュメントをドッキングするように彼に指示しました。インターフェイスは非常にシンプルです。私は彼の具体的なビジネスが何であるかを知りたかったのですが、彼はそれを解決するために助けが必要だと言いました。以下は私たちの会話のスクリーンショットです:
彼の提示した金額は大したものではありませんでしたが、たまたまその時は何もすることがなかったので、その申し出を受け入れました。以前書いたコードを再度変更したら、すぐに調整してくれました。スクリーンショットを見せました。問題がないことを確認した後、50元の赤い封筒を送ってくれました。書類も送りました。すべての内容は彼に送られました。」終わりました。
次にお話したいのは、この問題の背後にある技術的な問題です。
まず第一に、彼は PHP 開発を理解しています。開発中に問題が発生しました。検索するのが面倒だったのか、それとも解決策が見つからなかったのかわかりません。この問題は実際には小さな問題です。リクエストシミュレーションのPHP実装に問題があります。
同じ問題に遭遇した人々に少しでも役立つことを願って、ファイル コード全体を共有します。実装コード:
<?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 中国語 Web サイトの他の関連記事を参照してください。