PHP GET请求返回不一致的结果

时间:2012-09-25 18:20:08

标签: php json

我通过PHP使用cURL来测试服务连接,并且我得到了一些不一致的结果。当我通过PHP& amp; 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(); 
?>

任何人都可以告诉我为什么我会得到不同的结果以及如何修复我的代码以便获得一致的结果?

1 个答案:

答案 0 :(得分:3)

您需要设置以下选项,以便将传输作为curl_exec()返回值的字符串返回,而不是直接输出。

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);