0

PHP 経由で cURL を使用してサービス接続をテストしていますが、一貫性のない結果が得られます。PHP と cURL を介してテストを実行すると、次の結果が得られます。

{"response":"\n\n\n\n \n \n 

同じ URL をブラウザに入力すると、次のようになります。

{"response":"\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n    <link href=\"/images/global/global.css\...and so on

私のブラウザの応答は短くなりましたが、おわかりいただけたでしょうか。

私の PHP では、JSON ファイルを読み込み、必要な URL を解析し、cURL を使用して GET 要求を送信します。PHP経由でサービスをテストするために使用しているコードは次のとおりです。

<?php
include ("serviceURLs.php"); 

class callService {
    function testService($url){

        $ch = curl_init($url);

        curl_exec($ch); 

        $info = curl_getinfo($ch); 
        if ($info['http_code'] == 200){
            echo("Test has passed </br>"); 
        }else{
            echo("Test Failed.</br> "); 
        }

        var_dump($info); 

        curl_close($ch); 
    }

    function readFile(){
        $myFile = "./service/catalog-adaptation.json"; 
        $fr = fopen($myFile, 'r');
        $fileData = fread($fr, filesize($myFile)); 
        $json_a = json_decode($fileData, TRUE); 

        $prodServer = $json_a['serverRoots']['%SERVER_ROOT']['PROD']; 
        $demoServer = $json_a['serverRoots']['%SERVER_ROOT']['DEMO']; 
        $testServer = $json_a['serverRoots']['%SERVER_ROOT']['TEST']; 

        $testUrls = $json_a['commands'];     
        foreach($testUrls as $tURL){
            $mURL =  $tURL['URL']; 

            if(stripos($mURL, "%")===0){
                $testTestService = str_replace("%SERVER_ROOT", $testServer, $mURL); 
                $testDemoService = str_replace("%SERVER_ROOT", $demoServer, $mURL); 
                $testProdService = str_replace("%SERVER_ROOT", $prodServer, $mURL); 

                echo ("Production test: "); 
                $this->testService($testProdService); 

                echo ("Demo test: "); 
                $this->testService($testDemoService); 

                echo ("Test test: "); 
                $this->testService($testTestService); 
            }
        }
    }
}
$newServiceTest = new callService;
$newServiceTest->readFile(); 
?>

異なる結果が得られる理由と、一貫した結果が得られるようにコードを修正する方法を誰か教えてもらえますか?

4

1 に答える 1

3

転送を直接出力するのではなく、curl_exec() の戻り値の文字列として返すには、以下のオプションを設定する必要があります。

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
于 2012-09-25T18:38:14.943 に答える