2013-07-24 1 views
0

분명히 내 검색에 맞는 키워드를 사용하지 않았거나 다른 사람들이 블로그 나 포럼 등에 작성한 내용을 이해하지 못하고 있습니다.PHP를 통해 두 서버간에 JSON 데이터를 보내고받는 방법

두 서버간에 데이터를 전달하는 것에 대한 정보를 찾고 있습니다. 데이터는 JSON 배열 내에 포함되는 것이 바람직합니다. 블로그를 완전히 작성한 사람이 누구인지 알고 있다면이 기사를 읽을 기회가 정말 좋을 것 같습니다. 그렇지 않으면 어떤 생각을 해줄 수 있습니까?

자세한 내용 : 사용자가 페이지를 방문하면 PHP 함수가 호출되고 일부 데이터는 JSON 배열에 "패키지 된"다음 다른 서버에 POST 명령으로 전달됩니다. POST를받은 후 두 번째 서버는 일부 처리를 수행 한 다음 일부 데이터를 패키지로 묶어 JSON 배열로 반환합니다. 그런 다음 사용자에게 결과가 표시됩니다.

다음은 HTTP 200 응답을 수신 중입니다. 데이터가 없습니다.

SITE 1

$data_string = json_encode(array('user_id'=>123)); 
$ch = curl_init('http://site2.dev/retrieve'); 
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
     'Content-Type: application/json', 
     'Content-Length: ' . strlen($data_string) 
     )); 

$result = curl_exec($ch); 
$status = curl_getinfo($ch); 
curl_close($ch); 

$result = json_decode($result); 

SITE 2가 암호화 될 수 있음 HTTPS가 최종 환경에서 사용되는 바와 같이 JSON 배열이 선택되었다

public function retrieve() { 
    return json_encode(array('some'=>'456')); 
} 

.

두 서버 모두 Laravel 4를 PHP 프레임 워크로 사용합니다.

의견 및 의견에 감사드립니다.

curl_setopt($ch, CURLOPT_HEADER, 0); 

및 내용 길이에 따옴표를 넣어 :

+0

을 너 자신 길이. 경로가 어떻게 생겼습니까? – takteek

+0

사이트 1 routes.php Route :: get ('/', 'AccountController @ getHome'); 및 사이트 2 routes.php Route :: get ('retrieve', 'ProcessController @ retrieve'); – Steven

+0

사이트 2 경로가'GET'이지만 사이트 1에서'POST '를 보내고 있습니다. – takteek

답변

0

이 추가 나는 당신이 콘텐츠 -을 설정하는 거 야 생각하지 않는다 제외하고는 분명히 뭔가 잘못 표시되지 않습니다

curl_setopt($ch, CURLOPT_HTTPHEADER, 
    array('Content-Type: application/json','"Content-Length: ' . strlen($data_string) . '"')); 
관련 문제