테스트 사이트 - 개발 중인 베타 버전입니다

api curl 로 표현 채택완료

수난이대 4년 전 조회 2,358

회원(users_permissions_user) 에게   10포인트를 넣어주는 api입니다.

 

포스트맨으로 정상 동작하여, php curl로 표현하려고 하는데

api 제공측 에러메세지가

Array ( [statusCode] => 400 [error] => Bad Request [message] => When using multipart/form-data you need to provide your data in a JSON 'data' field

표기됩니다.

 

포스트맨에 설정을 curl로 잘못 표현했는지 확인 부탁드립니다..

 

</p>

<p>

        $url = "주소~~<a href="<a href="https://api.flextalk.co.kr/histories" target="_blank" rel="noopener noreferrer">https://api.flextalk.co.kr/histories</a>">/histories</a>";

        $p_data = array(

        "users_permissions_user" => $app_id,

        "points" => "10", 

        "reason" => "포인트전환"

        );</p>

<p>        $headers = array();

     $headers[] = "Authorization: Bearer ".$s_token;

     $headers[] = "'Content-type:multipart/form-data'";

        $ch = curl_init();

        curl_setopt($ch, CURLOPT_URL, $url);

        curl_setopt($ch, CURLOPT_POST, 1); //전달 데이터를 POST 형식으로 전달

        curl_setopt($ch, CURLOPT_POSTFIELDS, $p_data ); //전달할 데이터값

        curl_setopt($ch, CURLOPT_RETURNTRANSFER,true); //TRUE 설정 시 curl_exec () 반환 값을 문자열로 반환

        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false );

        curl_setopt($ch, CURLOPT_COOKIE, '' );

        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

        $g = curl_exec($ch); //curl 실행

        curl_close($ch); //curl 세션 닫기

        $info = json_decode($g, true);

print_r($info);</p>

<p>

댓글을 작성하려면 로그인이 필요합니다.

답변 3개

Big1
4년 전

post data를 json으로 넘겨보세요

$headers[] = "'Accept: application/json'";

$headers[] = "'Content-type: application/json;'";

curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($p_data) ); //전달할 데이터값

 

쿠키에 아무 문자열이나 넣어보세요

curl_setopt($ch, CURLOPT_COOKIE, 'secure' );

 

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);

이것 한번 추가해 보세요.

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

 $headers[] = "'Content-type:multipart/form-data'";

첨부 파일을 보내는 것이 아니라면

 이 부분을 빼면 되지 않을까요?

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

수난이대
4년 전
답변 감사합니다. 해당영역을 제거해도
같은 메세지가 나옵니다.

$headers[] = "'Content-type: application/json;'";
로 변경해봐도 같은 에러네요..


포스트맨으로는 정상 동작하고 있습니다.

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인