krisDrOid
krisDrOid

Reputation: 3316

BlackBerry HttpCOnnection

/* Hi Iam developing an application where the BB app needs to post data to server. The Http connection works fine on Blackberry emulator, but when i try to test it on a real device the application cannot post data to server. the following is my code: */

package com.sims.datahandler;

import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;

import javax.microedition.io.Connector;
import javax.microedition.io.HttpConnection;

import net.rim.device.api.ui.UiApplication;
import net.rim.device.api.ui.component.Dialog;

import com.sims.commonmethods.CommonMethods;
import com.sims.screens.MenuScreen;

/**
 * 
 * @author SaiKrishnaPawar
 *
 */
public class GPRSHandler extends Thread {

        private String data;
        private String url;
        private String msgKey;
        private String mobileNumber;

        public String sendGPRSRequest() {

             HttpConnection httpConn = null;
             DataOutputStream oStrm = null;
             DataInputStream is = null;

             byte[] resp = null;
             String responseData;
             try {

                 // Creating httpconnection object to handle GPRS request
                 httpConn = (HttpConnection) Connector.open(url);

                 httpConn.setRequestMethod(HttpConnection.POST);
                 httpConn.setRequestProperty("User-Agent", "Profile/MIDP-2.0 Confirguration/CLDC-1.0");
                 httpConn.setRequestProperty("Accept_Language", "en-US");
                 httpConn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");

                 oStrm = httpConn.openDataOutputStream();

                 byte dataArray[] = (mobileNumber + "&" + msgKey + data).getBytes();

//               byte dataArray[] = (msgKey + data).getBytes();

                 CommonMethods.getSystemOutput("msg key and data:::"+mobileNumber + msgKey + data);

                 for (int i = 0; i < dataArray.length; i++) {
                     oStrm.writeByte(dataArray[i]);
                 }
                 DataInputStream din = httpConn.openDataInputStream();
                 ByteArrayOutputStream baos = new ByteArrayOutputStream();
                 int ch;
                 while ((ch = din.read()) != -1) {
                     baos.write(ch);
                 }

                 resp = baos.toByteArray();
                 responseData = new String(resp);
                 baos.close();
                 din.close();
                 httpConn.close();

                 return responseData.trim();

             } catch (IOException ex) {

                 CommonMethods.getSystemOutput("IO Exception in run method of gprs handler::" + ex.getMessage());

                 UiApplication.getUiApplication().invokeLater(new Runnable() {

                    public void run() {

                    int choice = Dialog.ask(Dialog.D_OK, "No Connectivity");

                    exitApp(choice);

                    }
                });

             } catch (NullPointerException nex) {

                 CommonMethods.getSystemOutput("NullPointerException:" + nex.getMessage());

             } catch (SecurityException e) {

                 CommonMethods.getSystemOutput("SecurityException:" + e.getMessage());

                 UiApplication.getUiApplication().invokeLater(new Runnable() {

                    public void run() {

                        Dialog.ask(Dialog.OK, "Security Exception");

                        UiApplication.getUiApplication().pushScreen(new MenuScreen());

                    }
                });

             } finally {
                 try {
                     if (is != null) {
                         is.close();
                     }
                     if (oStrm != null) {
                         oStrm.close();
                     }
                     if (httpConn != null) {
                         httpConn.close();
                     }

                 } catch (Exception ex) {

                     UiApplication.getUiApplication().invokeLater(new Runnable() {

                        public void run() {

                            Dialog.ask(Dialog.OK, "ERROR in While Connecting GPRS Connection");

                            UiApplication.getUiApplication().pushScreen(new MenuScreen());

                        }
                    });
                 }
             }

             return null;
        }

        public void setData(String data) {
            this.data = data;
        }

        public void setMsgKey(String msgKey) {
            this.msgKey = msgKey;
        }

        public void setUrl(String url) {
            this.url = url + ";deviceside=false";
        }

        public void setMobileNumber(String mobileNumber) {

            this.mobileNumber = mobileNumber;

        }

        private void exitApp(int choice) {

            System.exit(0);

        }

}

Upvotes: 0

Views: 1610

Answers (2)

V.J.
V.J.

Reputation: 9590

   httpConn = (HttpConnection) Connector.open(url);

instead of this you can write//

   url = url + ";deviceside=false";
   httpConn = (HttpConnection) Connector.open(url);

Upvotes: 1

Govindarao Kondala
Govindarao Kondala

Reputation: 2862

Please add network extension in this line

 httpConn = (HttpConnection) Connector.open(url);

at the end of the url please check did you add url extension for suppose you are using wifi then you have to add

   httpConn = (HttpConnection) Connector.open(url+";interface=wifi");

this is working for interface if you want to other types of networks then just refer my answer here

"Tunnel Failed" exception in BlackBerry Curve 8520

Upvotes: 1

Related Questions