curl 질문드립니다.
본문
안녕하세요
curl을 사용해봤습니다.
요청하는쪽에서는
$post = array(
'mid' => 'hong',
'key' => 'abcdefg',
'token' => 'test'
);
$url = "https://www.abc123.co.kr/test.php";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
curl_setopt($ch, CURLOPT_POST, true);
$response = curl_exec($ch);
curl_close($ch);
return $response;
로 보냈는데 받는쪽에서 저 $post값을 못 받아오겠습니다.
$post 값에
$post = "storeName=반갑다&skip=0&cateCode=5&limit=10";
이렇게 보내면 받는쪽에서
$_POST[storeName] // 반갑다
$_POST[skip] // 0
이런식으로 뜨던데
array나 json은 못받겠네요 찾아봐도 보내는쪽만 나오고 받는쪽에 대한게 잘 안나와서요
부탁드립니다.
!-->!-->!-->
답변 5
받는쪽에서 저 $post값을 못 받아오겠습니다.<---------아무것도 할 필요가 없습니다
그냥 <form name='aaa' method='post'><--- 이렇게 해서 값이 넘어왔다고 생각하고 처리하면 됩니다
$post = array( 'mid' => 'hong', 'key' => 'abcdefg', 'token' => 'test' );
위 배열을 post로 보냈으니 test.php에서는 $_POST로 사용하면 됩니다
test.php
<?php
print_r($_POST);
echo $_POST['mid'];
echo $_POST['key'];
echo $_POST['token'];
?>
위와 같이 하면 값이 나올텐데 다른 무언가를 해줄 필요는 없습니다
16행 $response에는 test.php에서 출력하는 내용을 받아오는건데 test.php에서
무언가를 작업 한 후 성공/실패 여부를 돌려준다든가 전송이 성공이라든가 하는 것을
판단할 때 사용하면 됩니다
return $response;
지우시고
print_r($response);
이렇게 하면 값이 어떻게 나오는지 보세요.
$decode = json_decode($response, true);
echo $decode['storeName'];
이렇게 하면 되려나요?
오랜만에와서 가물가물..
요청페이지<->받는페이지
1. 요청페이지 : curl로 받는페이지(url) 호출. 호출 시 CURLOPT_POSTFIELDS 에 넘길항목 정의함
1-1. 받는페이지에서 값을 떨궈주면.. 요청페이지에서 return값을 사용할 수 있음(CURLOPT_RETURNTRANSFER, 1 일경우.. 변수에 담아서 처리)
2. 받는 페이지 : 넘어온 값을 받아서 처리...
json데이터는 윗 댓글처럼 json_decode처리하심되고요..
참고
1. http://docs.php.net/manual/kr/book.curl.php
2. 구글서치 : curl get post json
3. curl은 다차원배열 허용하지 않음.
- http_build_query
- serialize() / unserialize()
- json_encode() / json_decode()
rlawhd //
json 인경우..
요청페이지 옵션추가 : curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept: application/json', 'Content-Type: application/json'));
받는 쪽..
$decode = json_decode(file_get_contents('php://input'));
var_dump($decode);