สอบถามเรื่อง ส่งค่า XML ด้วย CURL PHP แล้วรับค่าได้น่ะครับ แต่เอาไปใช้ใน Function simplexml_load_string ไม่ได้อ่ะ
ไฟล์ ส่ง ข้อมูล
Code (PHP)
<?php
/*config*/
$checkin="20140421";
$duration="1";
$city_code="BKK";
$service_code="";
$nbradults="1";
$nbrchildren="0";
$countryname = "Thailand";
/*------*/
$loginparam = Login_infos($countryname);
$xml_rates='<?xml version="1.0" encoding="utf-8"?>
<FTSXML_FAH>
<VERSION>1.0</VERSION>
<USER_TOKEN>token</USER_TOKEN>
<LOGIN_INFO>
<SYSTEM>'.$loginparam[0].'</SYSTEM>
<OPERATOR>'.$loginparam[1].'</OPERATOR>
<POS>'.$loginparam[2].'</POS>
<AGENCY>'.$loginparam[3].'</AGENCY>
<PASSWORD>'.$loginparam[4].'</PASSWORD>
</LOGIN_INFO>
<SEARCH>
<FLAGS>
<RETURNWHEN>R</RETURNWHEN>
<PRICEDONLY>Y</PRICEDONLY>
<SHOWROOMS>Y</SHOWROOMS>
<SHOWBREAK>Y</SHOWBREAK>
</FLAGS>
<FORWHOM>
<FORAGENCY>'.$loginparam[5].'</FORAGENCY>
<FORCOUNTRY />
</FORWHOM>
<SORT>P</SORT>
<CURRENCY>THB</CURRENCY>
<STAYPERIOD>
<CHECKINDATE>'.$checkin.'</CHECKINDATE>
<DURATION>'.$duration.'</DURATION>
</STAYPERIOD>
<CITY>'.$city_code.'</CITY>
<HOTELPARAMS>
<SERVICE>'.$service_code.'</SERVICE>
<SUBSERVICE>---</SUBSERVICE>
</HOTELPARAMS>
<ROOMS>
<ROOM>
<QUANTITY></QUANTITY>
<ADULT_NO>'.$nbradults.'</ADULT_NO>
<CHILD_NO>'.$nbrchildren.'</CHILD_NO>
</ROOM>
</ROOMS>
</SEARCH>
</FTSXML_FAH>';
print_r($xml_rates);
echo "<BR>";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://www.xxx.travel/admin/xml/xml.php");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml_rates);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
echo $result = curl_exec($ch);
curl_close($ch);
?>
ไฟล์รับข้อมูล
Code (PHP)
<?php
print_r($_REQUEST);
$xml=simplexml_load_string($_REQUEST);
print_r($xml);
?>
ตอนนี้ได้ผลดังนี้
Array ( [ "1.0" encoding="utf-8"?> 1.0 token XAS BC B2C ATTB2C bc R Y Y Y ATTB2C P THB 20140421 1 BKK --- 1 0 ) << print_r ของ $_REQUEST ไฟล์รับข้อมูล แต่ print_r (simplexml_load_string) มันไม่แสดงผลเลย ต้องทำไงหรอคัรบTag : PHP
Date :
2014-04-17 09:47:59
By :
nut
View :
1401
Reply :
2
cast object to string
Code (PHP)
$xml = simplexml_load_string( (string)$_REQUEST);
หรือ
ใช้ simplexml_load_file()
ตรวจสอบตอนส่งด้วย
Code (PHP)
echo simplexml_load_string($result);
การดัก error
Code (PHP)
libxml_use_internal_errors(true);
$xml=simplexml_load_string($_REQUEST); //or simplexml_load_file
foreach( libxml_get_errors() as $error ) {
print_r($error);
}
ประวัติการแก้ไข 2020-05-30 17:12:27
Date :
2020-05-30 17:11:52
By :
PhrayaDev
ตัวส่ง เขียนให้ชัดเจน
Code (PHP)
$fields_string = http_build_query(['xml'=>$xml_rates]); // สำคัญบันทัดนี้ ใช้ function ของ php ช่วย
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);
ตัวรับก็ใช้ $_POST['xml']; เป็น string
ปล. ทำความเข้าใจกับชนิดตัวแปร ให้ดี
อันไหนเป็น แค่ string ธรรมดา อันใช้ เป็น object array
print_r($xml_rates); อันนี้เหมาะกับ array
echo $xml_rates; อันนี้เหมาะกับ string
print_r( $_request) มันได้อะไรมา มองให้ออก
ประกาศตัวแปรเป็นแค่ text literal ธรรมดา ไม่ต้องใช้ print_r
ประวัติการแก้ไข 2020-05-30 18:20:11
Date :
2020-05-30 18:16:37
By :
Chaidhanan
Load balance : Server 05