BlackBerryForums.com : Your Number One BlackBerry Community
     

»Sponsored Links


BlackBerryApps.com Best Sellers



Reply
 
LinkBack Thread Tools
  (#1 (permalink)) Old
Durgm Offline
Knows Where the Search Button Is
 
Posts: 23
Join Date: Aug 2009
Model: 9000
PIN: N/A
Carrier: T-System
Default [B]HttpConnection prob[/B] - 08-28-2009, 03:38 AM

Hi Myself Durg

I am newbie in BlackBerry development. I want to connect my application from internet. My code is

HttpConnection code:

import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStream;
//import javax.microedition.io.*;
import java.io.OutputStream;
//import java.util.*;
import javax.microedition.io.Connector;
import javax.microedition.io.HttpConnection;

public class HttpCommunicationHandler
{
HttpCommunicationHandler()
{

}

/**
* This method retrieves the data from the server using HTTP POST.
*/


public String getDataFromServerThroughPost(String getUrl, String urlData)
{
HttpConnection httpConn = null;
InputStream is = null;
OutputStream out = null;
String httpUrl = getUrl;
String paramsToBeSend = urlData;
String dataRead = "";

try {
httpConn = (HttpConnection) Connector.open(httpUrl);
httpConn.setRequestMethod(HttpConnection.POST);
httpConn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
httpConn.setRequestProperty("Content-Length", Integer.toString(paramsToBeSend.length()));
out = httpConn.openOutputStream();
out.write(paramsToBeSend.getBytes());
if (out != null)
out.close();
if ((httpConn.getResponseCode() == HttpConnection.HTTP_OK))
{
int length = (int) httpConn.getLength();
is = httpConn.openInputStream();
if (length == -1)
{
int chunkSize = 1024;
byte[] data = new byte[chunkSize];
ByteArrayOutputStream baos = new ByteArrayOutputStream();
int dataSizeRead = 0;// size of data read from input stream.
// keeps track of total size of data read upto now.
int totalDataSizeRead = 0;
while ((dataSizeRead = is.read(data)) != -1)
{

baos.write(data, 0, dataSizeRead);
}
dataRead = new String(baos.toByteArray());
baos.close();
}

else {
byte[] data = new byte[length];
// try to read all the bytes returned from the server.
is.read(data);
// dis.readFully(data);
dataRead = new String(data);
//if (data != null)
//data = null;

}

}
else {
// UIController.showErrorAlert("Network Error",
// "Error in communicating with the server.", d);
//System.out.println("Network Error","Error in communicating with the server.");

}
}
catch (IOException e)
{
String str ="hello";

//System.out.println("Network Error","Error in communicating with the server.", "OK", null);

}

// Since only limited number of network objects can be in open state
// it is necessary to clean them up as soon as we are done with them.
// Networking done. Clean up the network objects
finally {
try
{
if (is != null)
is.close();

}
catch (IOException e)
{

}
try
{
if (httpConn != null)
httpConn.close();
}
catch (IOException e)
{
//System.out.println("Exception occured " + t.toString());
}
}
return dataRead;
}
}


and I use this class in to my loginclass. I am sending the login and password and match after that want to print the success message.


LoginScreen code: want to generate action on click login button

try{
String datafrom = "";
HttpCommunicationHandler http = new HttpCommunicationHandler();
String getUrl =" my url";
String urlData ="?requestStr=<UserInfo><UserID>ravi</UserID><Password>kant</Password><LoginDate></LoginDate><IPAddress></IPAddress></UserInfo>";
datafrom = http.getDataFromServerThroughPost(getUrl,urlData);
System.out.println("value of datafrom"+datafrom);
}
catch(Throwable t){

}
When I click on the login button my app freeze.Please help me . its very urgent. Is there any permisson to set for network connection?

Thanks
Durg
   
Reply With Quote
Sponsored Links
Please Login or Register to Remove these Advertisements!

  (#2 (permalink)) Old
hrbuckley Offline
CrackBerry Addict
 
Posts: 823
Join Date: Jan 2006
Model: 9000
OS: 4.6.0.303
Carrier: Rogers CA
Default 08-28-2009, 09:09 AM

Quote:
Originally Posted by Durgm View Post
Hi Myself Durg

I am newbie in BlackBerry development. I want to connect my application from internet. My code is

HttpConnection code:

Code:
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStream;
//import javax.microedition.io.*;
import java.io.OutputStream;
//import java.util.*;
import javax.microedition.io.Connector;
import javax.microedition.io.HttpConnection;

public class HttpCommunicationHandler  
{   
       HttpCommunicationHandler() 
       {

       }
      
        /**
         * This method retrieves the data from the server using HTTP POST.
         */
        
       
        public String getDataFromServerThroughPost(String getUrl, String urlData) 
        {
            HttpConnection httpConn = null;
            InputStream is = null;
            OutputStream out = null;
            String httpUrl = getUrl;
            String paramsToBeSend = urlData;
            String dataRead = "";
          
          try {
                httpConn = (HttpConnection) Connector.open(httpUrl);
                httpConn.setRequestMethod(HttpConnection.POST);
                httpConn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
                httpConn.setRequestProperty("Content-Length", Integer.toString(paramsToBeSend.length()));
                out = httpConn.openOutputStream();
                out.write(paramsToBeSend.getBytes());
                if (out != null)
                    out.close();
                if ((httpConn.getResponseCode() == HttpConnection.HTTP_OK))
                 {
                   int length = (int) httpConn.getLength();                               
                   is = httpConn.openInputStream();
                   if (length == -1) 
                   {
                     int chunkSize = 1024;
                     byte[] data = new byte[chunkSize];
                     ByteArrayOutputStream baos = new ByteArrayOutputStream();
                     int dataSizeRead = 0;// size of data read from input stream.
                                   // keeps track of total size of data read upto now.
                     int totalDataSizeRead = 0;
                     while ((dataSizeRead = is.read(data)) != -1) 
                     {
                        
                        baos.write(data, 0, dataSizeRead);
                     }
                     dataRead = new String(baos.toByteArray());
                     baos.close();
                  } 
                          
                      else {                     
                           byte[] data = new byte[length];
                           // try to read all the bytes returned from the server.
                           is.read(data);
                           // dis.readFully(data);
                           dataRead = new String(data);
                           //if (data != null)
                           //data = null;

                          }
                              
                    } 
                    else {
                          // UIController.showErrorAlert("Network Error",
                          // "Error in communicating with the server.", d);
                          //System.out.println("Network Error","Error in communicating with the server.");
                                                            
                        }
              } 
              catch (IOException e) 
              {
                String str ="hello";
                        
                   //System.out.println("Network Error","Error in communicating with the server.", "OK", null);
                       
             }

             // Since only limited number of network objects can be in open state
           // it is necessary to clean them up as soon as we are done with them.
          // Networking done. Clean up the network objects
          finally {
                      try 
                      {
                          if (is != null)
                          is.close();

                      } 
                      catch (IOException e) 
                      {
                                
                      }
                      try 
                      {
                          if (httpConn != null)
                             httpConn.close();
                      } 
                      catch (IOException e) 
                      {
                             //System.out.println("Exception occured " + t.toString());
                       }
                }
              return dataRead;
       }
}

and I use this class in to my loginclass. I am sending the login and password and match after that want to print the success message.


LoginScreen code: want to generate action on click login button

Code:
 try{
                String datafrom = "";
                HttpCommunicationHandler  http = new HttpCommunicationHandler();
                String getUrl =" my url";
                String urlData ="?requestStr=<UserInfo><UserID>ravi</UserID><Password>kant</Password><LoginDate></LoginDate><IPAddress></IPAddress></UserInfo>";
                datafrom = http.getDataFromServerThroughPost(getUrl,urlData);
                System.out.println("value of datafrom"+datafrom);
            }
            catch(Throwable t){
                
                }
When I click on the login button my app freeze.Please help me . its very urgent. Is there any permisson to set for network connection?

Thanks
Durg
This belongs in the developer forum. Please read the sticky threads there.

HTTP connection activity, particularly reading from the InputStream must be done on a separate thread. If you try to do it on the event thread, when the read blocks the whole device freezes as you have noted.


BPS/Zarafa
   
Reply With Quote
Reply


Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On





Copyright © 2004-2009 BlackBerryFAQ.com, BlackBerryForums.com.
The names RIM © and BlackBerry © are registered Trademarks of Research In Motion Limited.