<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<META content="MSHTML 6.00.2800.1126" name=GENERATOR></HEAD>
<BODY bgColor=#ffffff>
<DIV><FONT face=Arial size=2>Rebbaj,</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>Sorry for my rush answer. After&nbsp;taking&nbsp;a 
look again at my code, </FONT></DIV>
<DIV><FONT face=Arial size=2>I understand your problem this time. </FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>I found the following comment in my 
code.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>#&nbsp;&nbsp; this step is important --- to 
behavior as a regualr Jabber client.&nbsp; <BR>#<BR>&nbsp;&nbsp;&nbsp; %roster = 
$Connection-&gt;RosterGet();<BR></FONT></DIV>
<DIV><FONT face=Arial size=2>I recalled the reason I wrote this comment here: 
"RosterGet()" is used to make a web client </FONT><FONT face=Arial 
size=2>behaving like a regular Jabber client such as Exodus for Windows. 
Otherwise, </FONT></DIV>
<DIV><FONT face=Arial size=2>you will not get&nbsp;a correct result by sending 
an IQ packet. That is what I found when I </FONT></DIV>
<DIV><FONT face=Arial size=2>debugging my code. </FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>if you comment this line in the code segment I sent 
in my previous, the following </FONT></DIV>
<DIV><FONT face=Arial size=2>IQ packet sending to the server would NOT give you 
a right result. </FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>-Yanming</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV>----- Original Message ----- </DIV>
<BLOCKQUOTE 
style="PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px">
  <DIV 
  style="BACKGROUND: #e4e4e4; FONT: 10pt arial; font-color: black"><B>From:</B> 
  <A title=rebbaj2000@yahoo.co.uk href="mailto:rebbaj2000@yahoo.co.uk">rebbaj 
  rebbaj</A> </DIV>
  <DIV style="FONT: 10pt arial"><B>To:</B> <A title=jdev@jabber.org 
  href="mailto:jdev@jabber.org">jdev@jabber.org</A> </DIV>
  <DIV style="FONT: 10pt arial"><B>Sent:</B> Tuesday, January 07, 2003 5:39 
  PM</DIV>
  <DIV style="FONT: 10pt arial"><B>Subject:</B> Re: [JDEV] Proper use of Perl 
  Net::Jabber calls</DIV>
  <DIV><FONT face=Arial size=2></FONT><FONT face=Arial size=2></FONT><BR></DIV>
  <P>Thanks Yanming.&nbsp; I took a good long look at the code found at <A 
  href="http://www.jabberstudio.org/cgi-bin/viewcvs.cgi/*checkout*/netjabber/examples/client.pl?rev=1.4&amp;content-type=text/plain">http://www.jabberstudio.org/cgi-bin/viewcvs.cgi/*checkout*/netjabber/examples/client.pl?rev=1.4&amp;content-type=text/plain</A> 

  <P>What I still do not understand is why the $Connection-&gt;RosterGet(); call 
  does not result in all of the roster entries being sent back&nbsp;from the 
  server&nbsp;and hence triggering the&nbsp;sub InIQ routine.&nbsp; If I 
  manually enter the following XML "&lt;iq type="get"&gt;&lt;query 
  xmlns="jabber:iq:roster"/&gt;&lt;/iq&gt;, I get all the entries back. 
  <P>The docs state "RosterGet() - sends an empty Net::Jabber::IQ::Roster tag to 
  the server so the server will send the Roster to the client." 
  <P>Any other ideas? 
  <P>Regards, 
  <P>Rebbaj 
  <P>&nbsp;<B><I>Yanming Xiao &lt;xiao@legatovideo.com&gt;</I></B> wrote: 
  <BLOCKQUOTE 
  style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #1010ff 2px solid">
    <META content="MSHTML 6.00.2800.1126" name=GENERATOR>
    <STYLE></STYLE>

    <DIV><FONT face=Arial size=2>Rabbaj,</FONT></DIV>
    <DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
    <DIV><FONT face=Arial size=2>It seems to me that you are using 2 different 
    packages. </FONT>&nbsp;</DIV>
    <DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
    <DIV><FONT face=Arial size=2>There is a function called "RosterGet()" in 
    Net::Jabber::Client. </FONT></DIV>
    <DIV><FONT face=Arial size=2>find the sample code in:</FONT></DIV>
    <DIV><FONT face=Arial size=2><A 
    href="http://jru.jabberstudio.org/">http://jru.jabberstudio.org/</A></FONT></DIV>
    <DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
    <DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
    <DIV><FONT face=Arial size=2>-Yanming</FONT></DIV>
    <BLOCKQUOTE 
    style="PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px">
      <DIV style="FONT: 10pt arial">----- Original Message ----- </DIV>
      <DIV 
      style="BACKGROUND: #e4e4e4; FONT: 10pt arial; font-color: black"><B>From:</B> 
      <A title=rebbaj2000@yahoo.co.uk 
      href="mailto:rebbaj2000@yahoo.co.uk">rebbaj rebbaj</A> </DIV>
      <DIV style="FONT: 10pt arial"><B>To:</B> <A title=jdev@jabber.org 
      href="mailto:jdev@jabber.org">jdev@jabber.org</A> </DIV>
      <DIV style="FONT: 10pt arial"><B>Sent:</B> Tuesday, January 07, 2003 9:40 
      AM</DIV>
      <DIV style="FONT: 10pt arial"><B>Subject:</B> [JDEV] Proper use of Perl 
      Net::Jabber calls</DIV>
      <DIV><FONT face=Arial size=2></FONT><FONT face=Arial 
      size=2></FONT><BR></DIV>
      <P>Hello jabber people.</P>
      <P>I am hoping that someone can help me out with how the Perl Net::Jabber 
      library should be used.&nbsp; Note that I am also somewhat new to perl so 
      if I get confused by some of the syntax, you will have to excuse me.&nbsp; 
      The examples in the Oreily book were rather helpful but I seem to be 
      having problems in calling and receiving IQ information.</P>
      <P>Here is what I am trying to send and receive in XML:</P>
      <P>SENT:<BR>&lt;iq id="jcl_9" type="get"&gt;<BR>&nbsp;&nbsp;&nbsp; 
      &lt;query 
      xmlns="jabber:iq:roster"/&gt;<BR>&lt;/iq&gt;<BR><BR>RECV:<BR>&lt;iq <A 
      href="mailto:from='rebbaj@jabber.org/Perl'">from='rebbaj@jabber.org/Perl'</A> 
      id='jcl_9' type='result'&gt;<BR>&nbsp;&nbsp;&lt;query 
      xmlns='jabber:iq:roster'&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;item <A 
      href="mailto:jid='rebbaj@jabber.com'">jid='rebbaj@jabber.com'</A> 
      name='rebbaj' subscription='both'/&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;item <A 
      href="mailto:jid='rebbaj2@jabber.com'">jid='rebbaj2@jabber.com'</A> 
      name='rebbaj2' subscription='both'/&gt;<BR>&nbsp; 
      &lt;/query&gt;<BR>&lt;/iq&gt;</P>
      <P>The code stub that I have written to do this is as follows.&nbsp; I 
      suspect that I have the flow a bit wrong and I am not using the optimal 
      calls to parse the resulting returned roster data...&nbsp; Any help would 
      be appreciated....</P>
      <P>rebbaj</P>
      <P>------------------------------------------------<BR>#!/usr/bin/perl<BR>use 
      Net::Jabber qw(Client);<BR>use strict;<BR>my 
      $c=Net::Jabber::Client-&gt;new();<BR>$c-&gt;Connect('hostname'=&gt; 
      'jabber.org', 'port'=&gt;5222);</P>
      <P>$c-&gt;AuthSend('username'=&gt; 
      'rebbaj',<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'password'=&gt; 
      'secret',<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'resource'=&gt; 'Perl');</P>
      <P>$c-&gt;SetCallBacks('presence'=&gt; 
      \&amp;handle_presence);<BR>$c-&gt;SetCallBacks('iq'=&gt; 
      \&amp;handle_iq);<BR>$c-&gt;PresenceSend();<BR><BR>My $IQ = new 
      Net::Jabber::IQ();<BR>$IQ-&gt;NewQuery("jabber:iq:roster");&nbsp; # Does 
      this actually make the IQ get request?$c-&gt;Send($IQ); # is this call 
      necessary?</P>
      <P>print "involking process\n";<BR>$c-&gt;Process();</P>
      <P><FONT face=Arial size=2></FONT>&nbsp;</P>
      <P>&nbsp;</P>
      <P><BR>$c-&gt;Disconnect;<BR>exit(0);</P>
      <P>sub handle_presence {<BR>&nbsp;my ($sid, $presence) = @_;</P>
      <P>&nbsp;my $show = $presence-&gt;GetShow() || 
      'online';<BR>&nbsp;<BR>&nbsp;print "presence packet received 
      $show\n";<BR>}</P>
      <P>sub handle_iq {<BR>&nbsp;my ($sid, $iq) = @_;</P>
      <P>&nbsp;my $querytag = $iq-&gt;GetQuery();</P>
      <P><BR>&nbsp;print "iq packet received $querytag\n";<BR>}</P>
      <P>
      <P><BR>
      <HR SIZE=1>
      <A 
      href="http://uk.yahoo.com/mail/tagline_xtra/?http://uk.docs.yahoo.com/mail_storage.html"><B><FONT 
      face=Arial size=2>With Yahoo! Mail you can get a bigger mailbox -- choose 
      a size that fits your needs</FONT></B></A><BR></BLOCKQUOTE></BLOCKQUOTE>
  <P>
  <P><BR>
  <HR SIZE=1>
  <A 
  href="http://uk.yahoo.com/mail/tagline_xtra/?http://uk.docs.yahoo.com/mail_storage.html"><B><FONT 
  face=Arial size=2>With Yahoo! Mail you can get a bigger mailbox -- choose a 
  size that fits your needs</FONT></B></A><BR></BLOCKQUOTE></BODY></HTML>