XML fájl feltöltés POST metódussal paraméterezve

XML fájl feltöltés POST metódussal paraméterezve
2012-12-13T16:09:57+01:00
2012-12-24T12:07:24+01:00
2022-11-27T18:40:36+01:00
roland76
Sziasztok!

Férfiasan bevallom az alábbi feladat kifogott rajtam.
Adott egy ügyviteli program, ahonnan a kiexportált készletlistát (csv-t) kell naponta feltölteni egy tőlünk független szerverre XML formátumban. Ezzel a részével nincs is gond, a CSV-t feldolgozó és XML-lé átalakító scriptet már régebben megcsináltam, de gondoltam ezt automatikusan fogjuk ezentúl végezni.
Egészen odáig működik a dolog, hogy létrejön a megfelelő XML fájl, amit továbbítani kellene a feldolgozó oldalra, méghozzá a következő instrukciók szerint, mint paraméterek: "HTTP POST kérés formájában (típusa: multipart/form-data) a
"keszletadatok" nevű mezőnek kell tartalmaznia a feltöltendő xml tartalmat."

Több helyen utánaolvastam, többek kött itt is, hogy vagy file_get_contents vagy cURL a megoldás kulcsa, de ezen a téren hiányos a tudásom, nem is jutottam eredményre.
Az alábbi kódokat próbáltam erőltetni:
$fileout az XML fájl elérési útja
de $adat változóban elérhető a komplett xml tartalom is.
$post_data = array( 'file' => file_get_contents($fileout) ); $url = "http://xml.domain.hu/feldolgozas"; $stream_options = array( 'http' => array( 'method' => 'POST', 'header' => 'Content-type: multipart/form-data;' . "\r\n", 'content' => http_build_query($post_data))); $context = stream_context_create($stream_options); $response = file_get_contents($url, null, $context); var_dump($response); }

És a másik:

$filename = $fileout; $handle = fopen($filename, "r"); $XPost = fread($handle, filesize($filename)); fclose($handle); $url = "http://xml.domain.hu/feldolgozas"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HTTPHEADER, Array("Content-Type: multipart/form-data")); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $XPost); curl_setopt($ch, CURLOPT_POST, 1); $result = curl_exec($ch);
És itt akadtam el, az első megoldás visszaad egy 'Betölés sikertelen' választ, de cURL féle 417-es HTTP kódot ad vissza.
Továbbá hogyan adjam meg a 'keszletadatok' mezőnevet?

Előre is köszönöm a segítséget!
Mutasd a teljes hozzászólást!
Helo,

Szerintem Ez fog neked kelleni.
Mutasd a teljes hozzászólást!

Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd