포스트맨으로 정상동작하는 api가 php소스로 구현할때 안되는 이유가 있나요? 채택완료
포스트맨으로 api 테스트완료하고 php 소스로 api 연동해서 정상적으로 사용하고 있었습니다.
몇일전부터 php 소스로 api 연동한 작업이 안되고있어요
포스트맨으로는 정상동작합니다. ( 둘다안되면 api문제라 확신하는데..)
php 코드가 문제라면 처음부터 동작을 안했어야하는데 잘되던게 최근에 안됩니다.
제 생각에는...
서버쪽 포트나 다른 설정을 바꿨을거라 추측이 되고있습니다만,
어떤경우에 이럴수 있는지
다른분들 의견을 듣고싶습니다..
print_r 결과는 500 에러입니다.
참고로 curl은 막히지 않았습니다. 다른 api는 다 동작합니다.
$s_token 토큰도 정상적인 값이 들어있습니다.

</p>
<div class="container">
<div class="line number1 index0 alt2"><code class="php variable">$url</code> <code class="php plain">= </code><code class="php string">"<a href="<a href="http:///" target="_blank" rel="noopener noreferrer">http:///</a>"><font color="#0066cc">http://</font></a>~api주소~~"</code><code class="php plain">;</code></div>
<div class="line number2 index1 alt1"><code class="php spaces"> </code><code class="php variable">$p_data</code> <code class="php plain">= </code><code class="php keyword">array</code><code class="php plain">(</code></div>
<div class="line number3 index2 alt2"><code class="php spaces"> </code><code class="php string">"amount"</code> <code class="php plain">=> </code><code class="php variable">$s_point</code></div>
<div class="line number4 index3 alt1"><code class="php spaces"> </code><code class="php plain">);</code></div>
<div class="line number5 index4 alt2"><code class="php spaces"> </code><code class="php variable">$data_string</code> <code class="php plain">= json_encode(</code><code class="php variable">$p_data</code><code class="php plain">);</code></div>
<div class="line number6 index5 alt1"><code class="php spaces"> </code><code class="php variable">$headers</code> <code class="php plain">= </code><code class="php string">"Authorization: Bearer "</code><code class="php plain">.</code><code class="php variable">$s_token</code><code class="php plain">;</code></div>
<div class="line number7 index6 alt2"><code class="php spaces"> </code><code class="php variable">$ch</code> <code class="php plain">= curl_init();</code></div>
<div class="line number8 index7 alt1"><code class="php spaces"> </code><code class="php plain">curl_setopt(</code><code class="php variable">$ch</code><code class="php plain">, CURLOPT_URL, </code><code class="php variable">$url</code><code class="php plain">);</code></div>
<div class="line number9 index8 alt2"><code class="php spaces"> </code><code class="php plain">curl_setopt(</code><code class="php variable">$ch</code><code class="php plain">, CURLOPT_POST, 1); </code><code class="php comments">//전달 데이터를 POST 형식으로 전달</code></div>
<div class="line number10 index9 alt1"><code class="php spaces"> </code><code class="php plain">curl_setopt(</code><code class="php variable">$ch</code><code class="php plain">, CURLOPT_POSTFIELDS, </code><code class="php variable">$data_string</code> <code class="php plain">); </code><code class="php comments">//전달할 데이터값</code></div>
<div class="line number11 index10 alt2"><code class="php spaces"> </code><code class="php plain">curl_setopt(</code><code class="php variable">$ch</code><code class="php plain">, CURLOPT_RETURNTRANSFER,true); </code><code class="php comments">//TRUE 설정 시 curl_exec () 반환 값을 문자열로 반환</code></div>
<div class="line number12 index11 alt1"><code class="php spaces"> </code><code class="php plain">curl_setopt(</code><code class="php variable">$ch</code><code class="php plain">, CURLOPT_SSL_VERIFYPEER, false );</code></div>
<div class="line number13 index12 alt2"><code class="php spaces"> </code><code class="php plain">curl_setopt(</code><code class="php variable">$ch</code><code class="php plain">, CURLOPT_COOKIE, </code><code class="php string">''</code> <code class="php plain">);</code></div>
<div class="line number14 index13 alt1"><code class="php spaces"> </code><code class="php plain">curl_setopt(</code><code class="php variable">$ch</code><code class="php plain">, CURLOPT_HTTPHEADER, </code><code class="php keyword">array</code><code class="php plain">( </code><code class="php variable">$headers</code><code class="php plain">, </code><code class="php string">'Content-Type: application/json'</code><code class="php plain">) );</code></div>
<div class="line number15 index14 alt2"><code class="php spaces"> </code><code class="php variable">$g</code> <code class="php plain">= curl_exec(</code><code class="php variable">$ch</code><code class="php plain">); </code><code class="php comments">//curl 실행</code></div>
<div class="line number16 index15 alt1"><code class="php spaces"> </code><code class="php plain">curl_close(</code><code class="php variable">$ch</code><code class="php plain">); </code><code class="php comments">//curl 세션 닫기</code></div>
<div class="line number17 index16 alt2"><code class="php spaces"> </code><code class="php variable">$info</code> <code class="php plain">= json_decode(</code><code class="php variable">$g</code><code class="php plain">, true);</code></div>
<div class="line number18 index17 alt1"> </div>
<div class="line number19 index18 alt2"><code class="php plain">print_r(</code><code class="php variable">$g</code><code class="php plain">);</code></div>
<div class="line number20 index19 alt1"><code class="php plain">print_r(</code><code class="php variable">$info</code><code class="php plain">);</code></div>
</div>
<p>
답변 3개
1. postman 으로 전송시 요청된 의 헤더 값을 보고 다 넣어본다.
2. 하나씩 빼본다
아마 referer 나 origin 문제가 아닐까 생각해봅니다.
답변에 대한 댓글 2개
브라우저 구분을 위해서든지 뭐 그런 용도겠죠?
제가 쓰는 safari 는 user-agent 가 "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.3 Safari/605.1.15"
이런식이네요
댓글을 작성하려면 로그인이 필요합니다.
api 통신의 경우 수발신 모두 확인해보셔야 합니다.
1. 수신 받는 쪽 서버에서 전송데이터가 제대로 받고있는지
2. 수신받는쪽 서버에서 발신서버 쪽으로 결과 데이터를 제대로 전달하는지
============= 위2개가 아무 문제가 없다면
3.
</p>
<pre>
<code>if (curl_errno($ch)) {
$error_msg = curl_error($ch);
}</code></pre>
<p>
추가하여 에러메시지를 확인해보시기 바랍니다.
=======================
기존에 정상적으로 동작하던 기능이면 코드의 문제 보다는
전송 데이터 의 문제(값이 없다든지)( , 서버 설정의 문제(갑자기 바뀌었다든지)
등 다양한 원인이 있을수있습니다
답변에 대한 댓글 1개
덕분에 해결했습니다. 채택 못해드려서 죄송합니다.
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
headers[] = "User-Agent:PostmanRuntime/7.26.8";
이코드가 들어가야 적용이 되네요.
희안하네요.. 어떤설정이 바꼈길래 저런 헤더정보가 넘어가야 된다니..
덕분에 해결했습니다 감사합니다.