に変数を挿入しますが、我々はこの配列は、cURLの経由で送信するURLを構成し、この配列PHP - 配列
$args = array('responseType' => 'Xml',
'serverName' => 'vl18278.dinaserver.com',
'command' => 'Vps_GetUsedSpace',
) ;
を持っていると言います。私は、変数$ VPSでvl18278.dinaserver.com
を交換する必要があるが、私はそれを交換する場合、URLは単に属性serverNameのの=記号の前に%5B0%5D
を示しています。
responseType=Xml&serverName%5B0%5D=vl18278.dinaserver.com&command=Vps_GetUsedSpace
私はvl18278.dinaserver.com
を交換いけない場合は、URLが正しいですか。
私のコードで何が問題になっていますか?それらの%5B0%5Dが私のURLに入るのはなぜですか?事前に:( おかげ
完全なコード:
<?php
$listavps = simplexml_load_file('servers.xml');
foreach ($listavps->servers->server as $vps) {
$urlApi = 'url.php';
$username = 'user';
$password = 'pass';
$args = array('responseType' => 'Xml',
'serverName' => 'vl18278.dinaserver.com',
'command' => 'Vps_GetUsedSpace',
) ;
$args = (is_array ($args) ? http_build_query ($args, '', '&') : $args);
$headers = array();
$handle = curl_init($urlApi);
if($handle === false) // error starting curl
{
$error = '0 - Couldn\'t start curl';
}
else
{
curl_setopt ($handle, CURLOPT_FOLLOWLOCATION, true);
curl_setopt ($handle, CURLOPT_RETURNTRANSFER, true);
curl_setopt ($handle, CURLOPT_URL, $urlApi);
curl_setopt($handle, CURLOPT_USERPWD, $username.':'.$password);
curl_setopt($handle, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($handle, CURLOPT_TIMEOUT, 60);
curl_setopt($handle, CURLOPT_CONNECTTIMEOUT, 4); // set higher if you get a "28 - SSL connection timeout" error
curl_setopt ($handle, CURLOPT_HEADER, true);
curl_setopt ($handle, CURLOPT_HTTPHEADER, $headers);
$curlversion = curl_version();
curl_setopt ($handle, CURLOPT_USERAGENT, 'PHP '.phpversion().' + Curl '.$curlversion['version']);
curl_setopt ($handle, CURLOPT_REFERER, null);
curl_setopt ($handle, CURLOPT_SSL_VERIFYPEER, false); // set false if you get a "60 - SSL certificate problem" error
curl_setopt ($handle, CURLOPT_POSTFIELDS, $args);
curl_setopt ($handle, CURLOPT_POST, true);
$response = curl_exec ($handle);
echo $args;
if ($response)
{
$response = substr($response, strpos($response, "\r\n\r\n") + 4); // remove http headers
// parse response
$responseSimpleXml = simplexml_load_string($response);
if($responseSimpleXml === false)
{
// invalid xml response
}
else
{
// parse response
$errorCode = $responseSimpleXml->response->responseCode ;
echo $errorCode;
if($errorCode == 1000) // success
{
$usado = $responseSimpleXml->response->data->total_space;
$capacidad = $responseSimpleXml->response->data->space_limit;
echo 'Usado: '.$usado.'</br>Total: '.$capacidad.'.';
}
else // normal errors
{
$errors = $responseSimpleXml->response->errors;
foreach($errors->error as $error)
{
// process error
}
}
}
}
else // http response code != 200
{
$error = curl_errno ($handle) . ' - ' . curl_error ($handle);
}
curl_close($handle);
}
}
?>
この配列が関数で処理されているためでurlencode – Robert
http://stackoverflow.com/questions/16613015/what-would-cause-5b05d-to-be-added-to-the-url –
提示してくださいあなたの_exact_コード。 – arkascha