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 回答