Help send file

PHP programming forum. Ask questions or help people concerning PHP code. Don't understand a function? Need help implementing a class? Don't understand a class? Here is where to ask. Remember to do your homework!

Moderator: General Moderators

roby2411
Forum Newbie
Posts: 13
Joined: Tue Sep 12, 2006 9:52 am

Help send file

Post by roby2411 »

Please help how can I send XML file to a webservice on a server listening on a port

i.e

assume that i have xml file named file.xml
and the web service url is http://192.168.1.1:5555 where 5555 is the port i need to send for

how could i send this file.xml to the service URL

please help me i'm really getting crazy for this

thankyou
User avatar
Burrito
Spockulator
Posts: 4715
Joined: Wed Feb 04, 2004 8:15 pm
Location: Eden, Utah

Post by Burrito »

what have you tried?

you might look into fsockopen().
roby2411
Forum Newbie
Posts: 13
Joined: Tue Sep 12, 2006 9:52 am

Send File

Post by roby2411 »

actually I didn't try any way as this is my first time i found this problem and i'm not sure what to do
User avatar
volka
DevNet Evangelist
Posts: 8391
Joined: Tue May 07, 2002 9:48 am
Location: Berlin, ger

Post by volka »

How does this service expect the data to be delivered?
roby2411
Forum Newbie
Posts: 13
Joined: Tue Sep 12, 2006 9:52 am

Send File

Post by roby2411 »

It accept a valid XML file or XML data string
User avatar
volka
DevNet Evangelist
Posts: 8391
Joined: Tue May 07, 2002 9:48 am
Location: Berlin, ger

Post by volka »

And it does this by FTP, POST (what parameter), GET (what paraemter), PUT, smtp or bongo drums?
roby2411
Forum Newbie
Posts: 13
Joined: Tue Sep 12, 2006 9:52 am

Post by roby2411 »

It does it by HTTP POST
User avatar
volka
DevNet Evangelist
Posts: 8391
Joined: Tue May 07, 2002 9:48 am
Location: Berlin, ger

Post by volka »

And the parameter is? Maybe more than one?
Come on ..work with me here. You must have thought a bit about the problem, didn't you?
roby2411
Forum Newbie
Posts: 13
Joined: Tue Sep 12, 2006 9:52 am

Post by roby2411 »

Code: Select all

<?xml version="1.0"?>
<SIGNData>
  <SIGNMessage>
    <Submit DeliveyReport="Yes" ReadReply="No" ReplyCharging="No" Adaptation="Yes" Redistribution="No">
      <ID>-1</ID>
      <Type>MT_TEST</Type>
      <From AddrType="AT_EMAIL" UserID="test" UserCredit="10">test</From>
      <Recipients>
        <To AddrType="AT_MISSDN">202</To>
      </Recipients>
      <Subject>PHP</Subject>
      <ObjectList>
        <Object>
        </Object>
      </ObjectList>
      <SmilFrame ID="0">
        <Duration>3</Duration>
      </SmilFrame>
      <SmilFrame ID="1">
        <Duration>3</Duration>
      </SmilFrame>
      <ServiceCode></ServiceCode>
      <LinkedID></LinkedID>
      <ClassType> MM_CT_PERSONNEL</ClassType>
      <Priority> MM_PT_NORMAL</Priority>
      <SubmitTime>2006-07-05T12:25:14-0400</SubmitTime>
      <ExpiryTime>2006-07-08T00:00:00-0400</ExpiryTime>
      <DeliveryTime>2006-07-05T00:00:00-0400</DeliveryTime>
      <ReplyDeadLine></ReplyDeadLine>
    </Submit>
  </SIGNMessage>
</SIGNData>
here is the xml i wanna send
and i wanna send it to http://www.domainname.com:5050
User avatar
volka
DevNet Evangelist
Posts: 8391
Joined: Tue May 07, 2002 9:48 am
Location: Berlin, ger

Post by volka »

a common html form

Code: Select all

<form method="post" action="xyz">
	<input type="text" name="textinput" />
	<input type="file" name="fileinput" />
	<intput type="submit" />
</form>
to a php script the transmitted data would be provided by $_POST['textinput'] or $_FILE['fileinput'].
You service probably does something similar. Therefore it's imperative to know what parameters (names) must be used.
The xml document is not of interest here.
roby2411
Forum Newbie
Posts: 13
Joined: Tue Sep 12, 2006 9:52 am

Post by roby2411 »

No no it goes like that

A form that user fill with the date input 1,2,3,4.........etc

user sumit the form

I pass the form variable to a PHP page that deal with the data and generate an XML string

and the missing step now that i wanna send this XML data string to the url on the sepecified port
User avatar
volka
DevNet Evangelist
Posts: 8391
Joined: Tue May 07, 2002 9:48 am
Location: Berlin, ger

Post by volka »

But the service you want to send the xml data to most probably expects a name=value pair as well.
value is your xml string. name is ...?
roby2411
Forum Newbie
Posts: 13
Joined: Tue Sep 12, 2006 9:52 am

Post by roby2411 »

But the service you want to send the xml data to most probably expects a name=value pair as well



no it just listen to the xml string and only waiting for a valid XML data type


the XML name is TESTMODE.xml
User avatar
volka
DevNet Evangelist
Posts: 8391
Joined: Tue May 07, 2002 9:48 am
Location: Berlin, ger

Post by volka »

Ok, if you're sure, that the request message body is nothing more than the raw xml document I have to trust you ;)

you can try pear's http_client.

Code: Select all

<?php
require_once 'HTTP/Client.php';

$data='<?xml ... ?>';
$target = 'http://www.domainname.com:5050';

$client= new HTTP_Client;
$client->post($target, $data, true);
var_dump( $client->currentResponse() );
?>
the important thing is the third parameter set to true, telling http_client that the data already has proper encoding.

PEAR & http_client have to be installed for this to be working, see http://pear.php.net/manual/en/package.h ... client.php
roby2411
Forum Newbie
Posts: 13
Joined: Tue Sep 12, 2006 9:52 am

Post by roby2411 »

I downloded the required file and it gives me error
Warning: require_once(HTTP/Request.php) [function.require-.....

so I downloaded Request.php and it give error again
Warning: require_once(HTTP/PEAR.php) [function.require-.....

again i downloaded the PEAR.php and it gives error
Warning: require_once(Net/Socket.php) [function.require-.....

and now i can't find this socket.php

Dear volka let me thank you a warm thankful due to your interest and i have another question that me help me solving my problem
while i'm trying the following code


Code: Select all

<?php
$fp = fsockopen("192.168.1.101", 5050, $errno, $errstr, 30);
if (!$fp) {
   echo "$errstr ($errno)<br />\n";
} else {
   $out = "GET / HTTP/1.1\r\n";
   $out .= "Host: 192.168.1.101\r\n";
   $out .= "Connection: Close\r\n\r\n";

   fwrite($fp, $out);
   while (!feof($fp)) {
       echo fgets($fp, 128);
   }
   fclose($fp);
}
?>
it gives me the following error

Warning: fsockopen() [function.fsockopen]: unable to connect to 192.168.1.101:5050 (A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. ) in C:\AppServ\www\post\ex6.php on line 2
A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. (10060)

and i do listen to the bort with linux ethereal but i never recieve any package while listening to the port

once again i tried this code :

Code: Select all

<?php
$fp = fsockopen("udp://192.168.1.101", 5050, $errno, $errstr);
if (!$fp) {
   echo "ERROR: $errno - $errstr<br />\n";
} else {
   fwrite($fp, "\n");
   echo fread($fp, 26);
   fclose($fp);
}
?>
and i found the packeage goes well and i recieve it on my linux machine
so now I can't find where is the problem
and if i'm gonna use the second code only 1 missing thing is how to transfer the sample.xml with that stream i have
Post Reply