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

curl 에서 데이터 전송할때 해당서버에서 \u200B <-- 이 문자가 들어간다고 하는데.. 채택완료

씨메이크 3년 전 조회 1,964

이유가 뭔지 알수 있을까요??

 

예를 들면 

도메인/token​/balance/

이렇게 전송할때 

 

해당 서버에서는 

도메인/token\u200B/balance/ HTTP/1.1

이렇게 로그가 찍힌다고 합니다

그래서 데이터 결과 값을 받질 못하는데

 

제 쪽에서는 전송 url 에 공백제거 함수를 쓰고 뭘해도 똑같다고 합니다

 

$url = 도메인/token​/balance/

$url = preg_replace('/\s+/', '', $url); $url = str_replace('u200B', '', $url);

 

이렇게 해도 똑같다고 합니다 ;;;

 

 

해당 서버 관리자가 php 개발자가 아니라  모르겠다고 하는데....

 

 

 

그런데 예로

도메인/token/address

이런식으로 다른 url 을 전송 했을 경우엔 제대로 들어 갑니다

 

도메인/token​/balance/ 

 

token​/balance 만 보낼때 문제가 되네요

 

무슨 문제 일까요?

 

아래는 해당업체의 소스를 url 부분만 수정한  코드 입니다

 

 

</strong></p>

<p>$url = '도메인/token​/balance/';

$url = preg_replace('/\s+/', '', $url);

$url = str_replace('u200B', '', $url);

$curl = curl_init();</p>

<p>curl_setopt_array($curl, array(

CURLOPT_URL => $url ,

CURLOPT_RETURNTRANSFER => true,

CURLOPT_ENCODING => '',

CURLOPT_MAXREDIRS => 10,

CURLOPT_TIMEOUT => 0,

CURLOPT_FOLLOWLOCATION => true,

CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,

CURLOPT_CUSTOMREQUEST => 'POST',

CURLOPT_POSTFIELDS => array('mb_id' => 'devtest1'),

CURLOPT_HTTPHEADER => array(

'ApiKey: 키값'

),

));

$response = curl_exec($curl);

curl_close($curl);</p>

<p>echo  $response;</p>

<p><strong>
 

 

 

 

 

 

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

답변 2개

채택된 답변
+20 포인트
$url = '도메인/token​/balance/';

 

이 라인을 삭제하고 다시 타이핑해 보세요.

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

답변에 대한 댓글 2개

씨메이크
3년 전
그래도 똑같아서 해당 서버에서 제쪽 데이터를 받을때 해당 문자를 공백으로 치환해 주었습니다.ㅜㅜ 답변 감사합니다.
엑스엠엘
3년 전
https://www.fileformat.info/info/unicode/char/200b/index.htm
이런 좀 특별한 글자가 어떤 이유로 끼어 있는데

말씀드린 대로 하면 보통은 없어집니다.

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

3년 전

$url = str_replace('u200B', '', $url);

->

$url = preg_replace( '/[\x{200B}-\x{200D}]/u', '', $url);

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

답변에 대한 댓글 1개

씨메이크
3년 전
답변 감사합니다. 그래도 저쪽에서는 해당 문자가 들어간다고 하네요 .. 해당 서버에서 수정을 해주었네요~~ 답변 감사합니다~~

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

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

로그인