Это на WordPress.
Если имя пользователя, пароль и ссылка начинаются с буквы, тогда запрос и ответ работают нормально.
Но если имя пользователя, пароль или ссылка - это число, значит, оно не отправляется.
На почтальоне все работает нормально.
Я пытался поставить его как переменную
$data = "body xml"
CURLOPT_POSTFIELDS => $data,
Это не сработало, но я также не был уверен, как я получуВ любом случае $ user и $ передаются туда.
$username = $current_user->first_name;
$password = $current_user->last_name;
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_PORT => "xxxxxxxxxxxx",
CURLOPT_URL => "xxxxxxxxxxxxxxxxx",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "<root>\r\n <user>" .$username. "</user>\r\n <pass>" .$password. "</pass>\r\n <reference>12345</reference>\r\n</root>\r\n",
CURLOPT_HTTPHEADER => array(
"Accept: application/xml",
"Cache-Control: no-cache",
"Connection: keep-alive",
"Content-Type: application/xml",
"Host: xxxxxxxxxxxx",
"Postman-Token: xxxxxxxxxxxxxxxx",
"User-Agent: PostmanRuntime/7.13.0",
"accept-encoding: gzip, deflate",
"cache-control: no-cache",
"content-length: 107"
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "There are no orders to show on this account ";
} else {
результаты приводятся здесь в таблице и т. д.
Так что, если имя пользователя было Bob, Password было mypass, а ссылка была ABC123, тогда он будет работать нормально.
Но
Если имя пользователя было Sid, Пароль 1234 и ссылка ABC444, тогда это не сработает
Если имя пользователя было Алиса Пароль mypass22 и ссылка 22, тогда это не будет работать
Кажется, что я убрал числа из этого
<root>\r\n <user>" .$username. "</user>\r\n <pass>" .$password. "</pass>\r\n <reference>12345</reference>\r\n</root>\r\n
У меня есть echo'd $ username и $ password, и в эхо на странице они работают нормально, так что я предполагаю, что это POSTFIELDSв керле это раздевание чисел?или просто не отправлять их?
редактировать
Попробовал изменить
CURLOPT_POSTFIELDS => "<root>\r\n <user>" .$username. "</user>\r\n <pass>" .$password. "</pass>\r\n <reference>12345</reference>\r\n</root>\r\n",
на
$input_xml = '<root>
<user>sid</user>
<pass>Mypass</pass>
<reference>12345</reference>
</root>';
CURLOPT_POSTFIELDS => $input_xml,
Но также не сработало