Hinnavaatlus
:: Foorum
:: Uudised
:: Ärifoorumid
:: HV F1 ennustusvõistlus
:: Pangalink
:: Telekavad
:: HV toote otsing
|
|
autor |
|
R A T
HV veteran

liitunud: 21.04.2004
|
24.08.2010 15:38:01
HTML/PHP - XML->PHP->XML |
|
|
Tervitus,
Mul oleks vaja lahendust, mis toimiks järgnevalt:
Programm genereerib XML faili ja POST-ib selle HTTP(S) protokolli kaudu veebilehele.
Veebileht analüüsib XML-is olevat infot ja genereerib vastus XML-i
Ma ei ole varem sellise asjaga kokku puutunud ning google ja W3 abiga ma ei suutnud mingit toimivat lahendust leida.
Ei taha varasemalt XML-i lahti lõhkuda ja kasutada varianti kus programm browseb:
...\index.php?xml1=tere&xml2=tulemast
Ise näen asja nii, et HTML requestis kirjutatakse asi headerisse, PHP siis loeb headerist selle XML-i välja ja genereerib vastuse.
Ehk siis, mul oleks vaja saaad $_post alla XML fail:
http://kellu.pri.ee/XML/
Kuid see XML on vaja saada sinna ILMA varasema veebi näppimiseta, ehk programm ise oma HTTP requestis sisaldab XMLi
Kas mu jutus leiduv mõte on võimalik. Kui jah, siis kust otsast alustada?
_________________ Jogani pogani pooh |
|
Kommentaarid: 33 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
31 |
|
tagasi üles |
|
 |
limp
HV Guru

liitunud: 11.08.2003
|
24.08.2010 15:40:34
|
|
|
kas SOAP-i põhimõte ei olegi selles?
_________________ Ärgake lapsed, maailm on hädaohus
Windows keskkond on nagu li*s - kõik teda ke*ivad aga keegi teda ei armasta! |
|
Kommentaarid: 56 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
52 |
|
tagasi üles |
|
 |
Absona
Lõuapoolik

liitunud: 17.09.2008
|
|
Kommentaarid: 11 loe/lisa |
Kasutajad arvavad: |
   |
:: |
2 :: |
0 :: |
8 |
|
tagasi üles |
|
 |
mikk36
HV Guru

liitunud: 21.02.2004
|
24.08.2010 16:55:12
|
|
|
Absona ja tema windowsi lahendused
R A T, programm tuleks seega ise luua?
|
|
Kommentaarid: 85 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
2 :: |
78 |
|
tagasi üles |
|
 |
mark11
HV vaatleja
liitunud: 28.01.2006
|
24.08.2010 17:54:07
|
|
|
tekitad oma programmis mingisuguse socketi ning selle kaudu saadad requesti serverile
POST /XML/index.php HTTP/1.1
Host: kellu.pri.ee
Content-Type: application/x-www-form-urlencoded
Content-Length: 4 + strlen(XMLFILE) // 4 tuleneb XML= pikkusest
XML=siia XML FAILI sisu |
arvatavasti tuleb XMLis vastavad sümbolid ära filtreerida, näiteks &..
HTTPS'ga läheb asi tsipa keerulisemaks
ning kh sinu serveris php siis pääses ligi sellele $_POST['XML'] abil
muidu üldiselt eelistan cURL teeki, C keelele on tehtud see.. seal ei pea jamama HTTP protokolliga, tuleb lihtsalt avada ühendus ning panna näiteks
ENABLE_POST ja siis vastavad fieldid ning kõik.. HTTPS tugi on kah seal kui õigesti mäletan
|
|
Kommentaarid: 1 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
1 |
|
tagasi üles |
|
 |
andresv
HV kasutaja
liitunud: 06.12.2004
|
|
Kommentaarid: 5 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
5 |
|
tagasi üles |
|
 |
R A T
HV veteran

liitunud: 21.04.2004
|
11.09.2010 09:41:50
|
|
|
Tänud ideede eest.
Ei ole siiani asja tööle saanud, peamiselt ajapuuduse tõttu.
Ise leidsin sellise asja, mis tundus kõige mõistlikum:
http://www.ibm.com/developerworks/library/x-pullparsingphp.html
Aga on probleeme, ei suuda echoda sissetulevat xmli, seega ma ei tea, kas üldse tuleb sisse
Kui avan saatva php lehe, siis saan tühja lehe ehk ei mingit vastust...
Kood saatval lehel on:
<?php
$fp = fsockopen("www.XXXXX.com", 80, $errno, $errstr, 30);
if (!$fp)
{
echo 'Could not open connection.';
} else {
$xmlpacket ='<?XML version="1.0"?>
<Your_XML>
</Your_XML>';
$contentlength = strlen($xmlpacket);
$out = "POST /send.php HTTP/1.0\r\n";
$out .= "Host: www.XXXXX.com\r\n";
$out .= "Connection: Keep-Alive\r\n";
$out .= "Content-type: application/x-www-form-urlencoded\r\n";
$out .= "Content-length: $contentlength\r\n\r\n";
$out .= "XML=$xmlpacket";
fwrite($fp, $out);
while (!feof($fp)) {
$theOutput .= fgets($fp, 128);
} fclose($fp);
// $theOutput is the response returned from the remote script
}
?> |
Hetkel on probleem vastuvõtvat phpd avades:
Warning: XMLReader::XML() [xmlreader.xml]: Empty string supplied as input in ...\receive.php on line 5
Warning: XMLReader::read() [xmlreader.read]: Load Data before trying to read in ...\receive.php on line 7
Kood on selline
<?php
$reader = new XMLReader();
$request = $HTTP_RAW_POST_DATA;
$reader->XML($request);
while ($reader->read()) {
echo $reader->name;
if ($reader->hasValue) {
echo ": " . $reader->value;
}
echo "\n";
}
respond($reader->value);
?>
|
p.s. koodist on välja võetud õige domeen ja failide asukoht
p.p.s esialgu kavatsen teha php senderi ja php receiveri, kui sellega asjad toimiva saab, siis programmist tuleva xmli saatmine on juba teise inimese töö...
_________________ Jogani pogani pooh |
|
Kommentaarid: 33 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
31 |
|
tagasi üles |
|
 |
blinx
HV vaatleja
liitunud: 28.11.2009
|
11.09.2010 12:16:57
|
|
|
eks v6id vaadata kas fwrite errorit ei anna
_________________ 'Just buy everything then you're safe' |
|
tagasi üles |
|
 |
R A T
HV veteran

liitunud: 21.04.2004
|
11.09.2010 16:10:24
|
|
|
Tühja lehe lükkab, errorit ei anna.
Mis rida see koodi lisada tuli, et näitaks kõiki erroreid?
_________________ Jogani pogani pooh |
|
Kommentaarid: 33 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
31 |
|
tagasi üles |
|
 |
R A T
HV veteran

liitunud: 21.04.2004
|
15.09.2010 19:08:55
|
|
|
NII, muutsin postituse.
Sain omal vastuse saatmise korda.
Praegu on probleem veel paketis, mis saadetakse.
Kuidas koostada ilus XML pakett, et ei võetaks vastu arrayna vaid xmlina??
Hetkel on mul paketi koostamise kood järgnev:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, XML_POST_URL);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
curl_setopt($ch, CURLOPT_USERPWD, "user:pass");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/xml; charset=UTF-8'));
/*$xml_output = "<?xml version='1.0' encoding='utf-8'?>";*/
$xml_output .= "<idmsgresp ver='1.0' partnerid='".$partnerid."' event='card_valid' reqid='123'>";
$xml_output .= "<card>";
$xml_output .= "<param name='card_number'>".$cardid."</param>";
$xml_output .= "</card>";
$xml_output .= "</idmsgresp>";
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml_output);
|
Sellise paketi saates ja teisel php lehel siis vastust print_r-iga printides näen, et tuleb array:
Array ( [ '1.0' partnerid='kli1' event='blabla' reqid='123'>
123451234512 ) 1
Ehk siis tundub, et peale esimest võrdusmärki läheb asi käest ära ja kõik loetakse üheks array osaks või midagi taolist...
btw, vastuvõtt teisel pool ja xmli parsimine käib sama koodiga, mis vastuse parsimisel, mis töötab.
Keeruline selgitada, aga igatahes mu XML mis saadetakse ja parsitakse, viskab sellise teate:
Fatal error: Uncaught exception 'Exception' with message 'SimpleXMLElement::__construct() expects parameter 1 to be string, array given' in C:\!Programs\xampp\htdocs\xml\build_xml.php:50 Stack trace: #0 C:\!Programs\xampp\htdocs\xml\build_xml.php(50): SimpleXMLElement->__construct(Array) #1 {main} thrown in C:\!Programs\xampp\htdocs\xml\build_xml.php on line 50
_________________ Jogani pogani pooh |
|
Kommentaarid: 33 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
31 |
|
tagasi üles |
|
 |
R A T
HV veteran

liitunud: 21.04.2004
|
21.09.2010 11:32:35
|
|
|
Aitäh abi eest, sain tööle...
_________________ Jogani pogani pooh |
|
Kommentaarid: 33 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
31 |
|
tagasi üles |
|
 |
|