Avaleht
uus teema   vasta Tarkvara »  Programmeerimine »  HTML/PHP - XML->PHP->XML märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale.  :: Teata moderaatorile teata moderaatorile
otsing:  
R A T
HV veteran
R A T

liitunud: 21.04.2004




sõnum 24.08.2010 15:38:01 HTML/PHP - XML->PHP->XML vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
limp
HV Guru
limp

liitunud: 11.08.2003




sõnum 24.08.2010 15:40:34 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum
Absona
Lõuapoolik
Lõuapoolik

liitunud: 17.09.2008




sõnum 24.08.2010 16:20:14 vasta tsitaadiga

WCF parim lahendus selleks thumbs_up.gif
_________________
Veebilehed, veebiprogrammeerimine, veebilahendused
Erinevad rakendused ja skriptid.
Kommentaarid: 11 loe/lisa Kasutajad arvavad:  :: 2 :: 0 :: 8
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
mikk36
HV Guru
mikk36

liitunud: 21.02.2004




sõnum 24.08.2010 16:55:12 vasta tsitaadiga

Absona ja tema windowsi lahendused thumbs_up.gif
R A T, programm tuleks seega ise luua?
Kommentaarid: 85 loe/lisa Kasutajad arvavad:  :: 0 :: 2 :: 78
tagasi üles
vaata kasutaja infot saada privaatsõnum
mark11
HV vaatleja

liitunud: 28.01.2006




sõnum 24.08.2010 17:54:07 vasta tsitaadiga

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 icon_lol.gif
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
vaata kasutaja infot saada privaatsõnum
andresv
HV kasutaja

liitunud: 06.12.2004



Autoriseeritud ID-kaardiga

sõnum 26.08.2010 13:27:38 vasta tsitaadiga

Äkki on abi ka sellest, siis ei peaks seda "XML=" sinna panema
http://www.codediesel.com/php/reading-raw-post-data-in-php/
Kommentaarid: 5 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 5
tagasi üles
vaata kasutaja infot saada privaatsõnum
R A T
HV veteran
R A T

liitunud: 21.04.2004




sõnum 11.09.2010 09:41:50 vasta tsitaadiga

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 icon_biggrin.gif

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
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
blinx
HV vaatleja

liitunud: 28.11.2009




sõnum 11.09.2010 12:16:57 vasta tsitaadiga

eks v6id vaadata kas fwrite errorit ei anna icon_biggrin.gif
_________________
'Just buy everything then you're safe'
tagasi üles
vaata kasutaja infot saada privaatsõnum
R A T
HV veteran
R A T

liitunud: 21.04.2004




sõnum 11.09.2010 16:10:24 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
R A T
HV veteran
R A T

liitunud: 21.04.2004




sõnum 15.09.2010 19:08:55 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
R A T
HV veteran
R A T

liitunud: 21.04.2004




sõnum 21.09.2010 11:32:35 vasta tsitaadiga

Aitäh abi eest, sain tööle...
_________________
Jogani pogani pooh
Kommentaarid: 33 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 31
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  Programmeerimine »  HTML/PHP - XML->PHP->XML
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.