2010-06-10 7 views
1

게시 요청을 한 다음 서버에서 JSON 결과를 검색하는 간단한 PHP 코드를 작성하려고합니다. 내게는 단순 해 보였지만 아래 코드는 연결을 열지 않습니다. 이러한 접근 방식의PHP 게시물 JSON 검색 요청

$handle = fopen('http://localhost:2057/validate/?'.$request, "r"); 

또는

$response = file_get_contents('http://localhost:2057/validate/' . $request); 

하지만 모두 그냥 아웃 시간 :

$port = 2057; 
$path = "/validate/"; 
$request = "value1=somevalue&value2=somevalue&value3=somevalue"; 

$http_request = "POST $path HTTP/1.0\r\n"; 
$http_request .= "Host: $server\r\n"; 
$http_request .= "Content-Type: application/x-www-form-urlencoded;\r\n"; 
$http_request .= "Content-Length: " . strlen($request) . "\r\n"; 
$http_request .= "\r\n"; 
$http_request .= $request; 

$response = ''; 

if(false == ($fs = @fsockopen($server, $port))) { 
      die ('Could not open socket'); 
} 

fwrite($fs, $http_request); 

while (!feof($fs)) 
{ 
    $response .= fgets($fs, 1160); 
} 

fclose($fs); 

는 또한 내가 가진 더 간단한 방법을 시도했습니다.

Visual Studio에서 실행중인 개발 서버에 연결하려고 했으므로 제한 시간/연결 문제와 관련이 있는지 확신 할 수 없습니다.

제안 사항이 PHP로 작성된 경우 여기를 클릭하십시오.

+0

텔넷이 설치되어 있습니까? 보지 않는다면 [여기] (http://www.leateds.com/2009/telnet-for-windows-vista-windows-7/). 텔넷을 통해 호스트에 연결하여 호스트에 연결할 수 있는지 확인하십시오. 그렇지 않으면 방화벽 문제 일 수 있습니다. – jigfox

+0

JS에서 유사한 쿼리를 작성하고 호스트에 도달하는 데 문제가 없으므로 방화벽 문제가 아닌 것 같습니다. – Brian

+0

첫 번째 예에서 $ server = "localhost";라는 행을 복사하지 않았다고 가정하는 것이 안전합니까? –

답변

0

HTTP 확장을 사용하여 작성하는 것이 더 간단 할 수 있습니다 http://fr.php.net/manual/en/function.http-post-data.php

+0

나는 이것이 우리가 배포 할 것이라고 확신하지만 사람들이 확장 기능을 갖도록 보장 할 수는 없으므로 PHP가 코어 PHP에 있어야합니다. – Brian

+2

그러나 코드와 함께 배 모듈을 배포 할 수 있습니다. HTTP_Request2를보고, POST 요청을 제출하고 데이터를 쉽게 검색하는 데 사용합니다. 관심이 있다면 아래에 몇 가지 샘플 코드를 게시하겠습니다. –

2

HTTP_Request2을 사용해보세요. 표준 PHP에는 없지만 응용 프로그램과 함께 배포 할 수 있으므로 설치 여부에 대해 걱정할 필요가 없습니다.

다음은 문서를 변환 서버에 POST하는 데 사용하는 클래스의 스 니펫입니다. 당신은 당신이 좋아하는 것을 올리고 비슷한 방식으로 결과를 얻을 수 있습니다.

$request = new HTTP_Request2('http://whereveryouwant:80/foo/'); 
$request->setMethod(HTTP_Request2::METHOD_POST) 
    ->setConfig('timeout', CONVERT_SERVER_TIMEOUT) 
    ->setHeader('Content-Type', 'multipart/form-data') 
    ->addPostParameter('outputFormat', $outputType); 
$request->addUpload('inputDocument', $inputFile); 
$result = $request->send(); 
if ($result->getStatus() == 200) { 
    return $result->getBody(); 
} else { 
    return false; 
}