首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BlackBerry HttpCOnnection

BlackBerry HttpCOnnection
EN

Stack Overflow用户
提问于 2011-12-26 15:19:26
回答 2查看 1.6K关注 0票数 0

/* Hi Iam正在开发一个应用程序,其中BB应用程序需要将数据发布到服务器。Http连接在Blackberry模拟器上运行良好,但当我尝试在真实设备上测试它时,应用程序无法将数据发送到服务器。以下是我的代码:*/

代码语言:javascript
复制
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);

        }

}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-26 15:46:44

代码语言:javascript
复制
   httpConn = (HttpConnection) Connector.open(url);

而不是这样,您可以编写//

代码语言:javascript
复制
   url = url + ";deviceside=false";
   httpConn = (HttpConnection) Connector.open(url);
票数 1
EN

Stack Overflow用户

发布于 2011-12-26 15:43:40

请在该行添加网络分机

代码语言:javascript
复制
 httpConn = (HttpConnection) Connector.open(url);

在url的末尾,请检查您是否添加了url扩展名,假设您使用的是wifi,那么您必须添加

代码语言:javascript
复制
   httpConn = (HttpConnection) Connector.open(url+";interface=wifi");

如果你想使用其他类型的网络,请在这里参考我的答案。

"Tunnel Failed" exception in BlackBerry Curve 8520

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8633764

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档