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.'&'; } rtrim($fields_string, '&'); //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 중국어 웹사이트의 기타 관련 기사를 참조하세요!