BlackBerry Forums Support Community

BlackBerry Forums Support Community (http://www.blackberryforums.com/)
-   BlackBerry Network (http://www.blackberryforums.com/blackberry-network/)
-   -   [B]HttpConnection prob[/B] (http://www.blackberryforums.com/blackberry-network/202464-b-httpconnection-prob-b.html)

Durgm 08-28-2009 02:38 AM

[B]HttpConnection prob[/B]
 
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

hrbuckley 08-28-2009 08:09 AM

Quote:

Originally Posted by Durgm (Post 1460624)
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.


All times are GMT -5. The time now is 06:22 AM.

Powered by vBulletin® Version 3.6.12
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.