1
도메인 이름 등록을 위해 NameCheap의 API를 초기화 할 함수를 만들고 있습니다. 등록 프로세스가 순조롭게 진행되었으므로 적절한 DNS 호스트를 설정하려고합니다.@ PHP CURL의 POST 변수 값 @
POSTMAN과 같은 형식으로 순수한 POST 요청을 만들면 정상적으로 작동하며 예상되는 XML 응답을 반환합니다. 그러나 PHP의 CURL 함수를 통해 데이터를 전달하려고하면 데이터가 손상됩니다. 문제를 DNS 호스트로 전달해야하는 '@'기호로 좁혔습니다. 거기에 다른 것을 넣으면 요청이 처리됩니다. url_encode 심볼을 시도했지만 API가이를 허용하지 않습니다.
제안 사항?
public function setDNSHost($name, $server){
list($domain,$tld) = explode('.',$name,2);
$request = $this->request_URL;
$curl = curl_init();
$args['ApiUser'] = $this->API_User;
$args['ApiKey'] = $this->API_Key;
$args['UserName'] = $this->API_User;
$args['Command'] = 'namecheap.domains.dns.setHosts';
$args['ClientIP'] = $this->Client_IP;
$args['SLD'] = $domain;
$args['TLD'] = $tld;
$args['HostName1'] = utf8_encode('@');
$args['RecordType1'] = 'A';
$args['Address1'] = $server;
$args['HostName2'] = 'www';
$args['RecordType2'] = 'CNAME';
$args['Address2'] = $name;
$args['HostName3'] = '*';
$args['RecordType3'] = 'CNAME';
$args['Address3'] = $name;
curl_setopt_array($curl, array(
CURLOPT_URL => $request,
CURLOPT_USERAGENT => 'API',
// CURLOPT_FAILONERROR => 1,
CURLOPT_FOLLOWLOCATION => 1,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => $args,
CURLOPT_TIMEOUT => 15
));
$response = curl_exec($curl);
curl_close($curl);
// $oXML = new SimpleXMLElement($response);
return $response;
}
Urlencode 및 urldecode를 사용 중일 수 있습니다. –