다음 코드 스 니펫과 같이 curl을 사용하려고합니다. 나는 이미 비슷한 문제를 찾을 수있는 모든 옵션을 시도했다. 모든 setopt 옵션을 추가했지만 여전히 1로 응답을받습니다. 서버에 대한 요청을 게시하고 json 응답을 기대하고 있습니다. 내가 뭘 놓치고 있니? 응답을 기록 제안 만 사용 인 print_r ($의 curl_response, TRUE)로 을하고, 사용 인 print_r (디코딩 $ [ 'ORDERID']) 특정 값을 얻을 수 있습니다 : PHP curl_exec가 1로 응답을 반환합니다.
$logger->info('url:'.$service_url);
$curl = curl_init();
$curl_post_data = array(
'username' => 'user1',
'password' => 'welcome'
);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_POSTFIELDS,$curl_post_data);
curl_setopt($curl, CURLOPT_URL, $service_url);
curl_setopt($curl, CURLOPT_HTTPGET, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl,CURLOPT_POST, 1);
curl_setopt($curl,CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($curl,CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl,CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl,CURLOPT_CONNECTTIMEOUT ,3);
curl_setopt($curl,CURLOPT_TIMEOUT, 20);
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Accept: application/json'
));
$curl_response = curl_exec($curl);
if ($curl_response === false) {
$info = curl_getinfo($curl);
curl_close($curl);
die('error occured during curl exec. Additioanl info: ' . var_export($info));
}
curl_close($curl);
$logger->info('curl_response 11:'.print_r($curl_response));
$decoded = json_decode($curl_response,JSON_PRETTY_PRINT);
if (isset($decoded->response->status) && $decoded->response->status == 'ERROR') {
die('error occured: ' . $decoded->response->errormessage);
}
$logger->info('response ok!');
$logger->info('decoded:'.print_r($decoded));
는 솔루션에 대한 업데이트되었습니다.
주의 사항 :'mixed print_r (mixed $ expression [, bool $ return = false])'_ return 매개 변수가 TRUE 인 경우이 함수는 문자열을 반환합니다. ** 그렇지 않으면 반환 값은 TRUE입니다. ** _ _ (강조 마인) – FirstOne
PHP가 '1'을 읽음에 따라 _why_가 ' true '로 설정되어 있습니다. – FirstOne
답장을 보내 주셔서 감사합니다. print_r 함수를 사용하지 않으려 고합니다. 응답을 받으면 로그 파일에 응답을 기록하고 싶습니다. { " orderId ":"39018 "}. 대신 orderId를 얻으려고합니다. $ decoded = json_decode ($ curl_response); $ logger-> info ('decoded :'. $ decoded [ 'orderId']); – PPB