>  기사  >  백엔드 개발  >  cURL POST 요청에서 배열을 올바르게 제출하는 방법은 무엇입니까?

cURL POST 요청에서 배열을 올바르게 제출하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-02 01:59:30615검색

How to Properly Submit Arrays in cURL POST Requests?

cURL POST 요청에서 배열 지원

이 쿼리에서 사용자는 cURL POST 요청 내에서 배열을 활용하는 방법에 대한 지침을 구합니다. 제공된 코드에서 배열을 사용하는 경우 첫 번째 값만 제출됩니다. 제출된 코드를 살펴보면 다음과 같은 문제가 확인됩니다.

<code class="php">//extract data from the post
extract($_POST);

//set POST variables
$url = 'http://api.example.com/api';
$fields = array(
            'username' => "annonymous",
            'api_key' => urlencode("1234"),
            'images[]' => urlencode(base64_encode('image1')),
            'images[]' => urlencode(base64_encode('image2'))
        );

//url-ify the data for the POST
foreach($fields as $key => $value) { $fields_string .= $key.'='.$value.'&amp;'; }
rtrim($fields_string, '&amp;');

//open connection
$ch = curl_init();

//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_POST, count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);

//execute post
$result = curl_exec($ch);
echo $result;

//close connection
curl_close($ch);</code>

잘못된 배열 구조:

주요 문제는 다음의 잘못된 배열 구조에 있습니다.

<code class="php">'images[]' => urlencode(base64_encode('image1')),
'images[]' => urlencode(base64_encode('image2'))</code>

이 접근 방식은 PHP에서 배열을 생성하지 않습니다. 대신 각 키 'images[]'는 이전 키를 덮어씁니다.

올바른 배열 구조(http_build_query 사용):

배열을 올바르게 구성하려면 http_build_query 함수:

<code class="php">$fields = array(
            'username' => "annonymous",
            'api_key' => urlencode("1234"),
            'images' => array(
                 urlencode(base64_encode('image1')),
                 urlencode(base64_encode('image2'))
            )
        );
$fields_string = http_build_query($fields);</code>

이 수정을 통해 $fields_string은 이제 'images' 키에 대한 여러 값이 있는 배열을 올바르게 나타냅니다.

수정된 코드:

이러한 조정을 통합하면 수정된 코드는 다음과 같이 나타납니다.

<code class="php">//extract data from the post
extract($_POST);

//set POST variables
$url = 'http://api.example.com/api';
$fields = array(
            'username' => "annonymous",
            'api_key' => urlencode("1234"),
            'images' => array(
                 urlencode(base64_encode('image1')),
                 urlencode(base64_encode('image2'))
            )
        );

//url-ify the data for the POST
$fields_string = http_build_query($fields);

//open connection
$ch = curl_init();

//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_POST, 1);
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);

//execute post
$result = curl_exec($ch);
echo $result;

//close connection
curl_close($ch);</code>

이러한 수정을 구현하면 cURL POST 요청의 배열 지원이 효과적으로 달성되어 모든 값이 서버를 의도한대로.

위 내용은 cURL POST 요청에서 배열을 올바르게 제출하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.