Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Blackberry中解析JSON数据的问题_Blackberry_Java Me - Fatal编程技术网

Blackberry中解析JSON数据的问题

Blackberry中解析JSON数据的问题,blackberry,java-me,Blackberry,Java Me,我是BB的新手,尝试解析Json文件,只想在对话框中打印Json响应。但是它会引发一个关于没有应用程序实例的错误,并且也会得到非法状态异常。我对它使用GETurl方法。 我还可以在ui应用程序中添加权限,如 ui应用程序屏幕 public static void main(String[] args) { ApplicationPermissions permRequest = ApplicationPermissionsManager.getInstance().getApplicat

我是BB的新手,尝试解析Json文件,只想在对话框中打印Json响应。但是它会引发一个关于
没有应用程序实例的错误,并且也会得到
非法状态异常
。我对它使用
GET
url方法。 我还可以在
ui应用程序中添加权限,如

ui应用程序屏幕

public static void main(String[] args) {
    ApplicationPermissions permRequest = ApplicationPermissionsManager.getInstance().getApplicationPermissions();
    permRequest = new ApplicationPermissions();
    permRequest.addPermission( ApplicationPermissions.PERMISSION_INTERNET );
    ApplicationPermissionsManager.getInstance().invokePermissionsRequest( permRequest );

    UiFunApplication app = new UiFunApplication();
    app.enterEventDispatcher();
这是主屏幕代码……

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Vector;

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

import net.rim.device.api.applicationcontrol.ApplicationPermissions;
import net.rim.device.api.applicationcontrol.ApplicationPermissionsManager;
import net.rim.device.api.ui.component.Dialog;
import net.rim.device.api.ui.container.MainScreen;

import com.rim.samples.jsonme.cakeorder.org.json.me.JSONArray;
import com.rim.samples.jsonme.cakeorder.org.json.me.JSONObject;

public class UiMainscreen extends MainScreen  {

    public UiMainscreen() {
        Dialog.alert("asdasd");
         HttpConnection conn = null;
          InputStream in = null;
          ByteArrayOutputStream out = null;
          try {
           //  String url = "http://api.twitter.com/1/users/show.json?screen_name=Kaka";
             String url = "http://docs.blackberry.com/sampledata.json";

             conn = (HttpConnection) Connector.open(url, Connector.READ);
             conn.setRequestMethod(HttpConnection.GET);

             int code = conn.getResponseCode();
             if (code == HttpConnection.HTTP_OK) {
                in = conn.openInputStream();
                out = new ByteArrayOutputStream();
                byte[] buffer = new byte[in.available()];
                int len = 0;
                while ((len = in.read(buffer)) > 0) {
                   out.write(buffer);
                }
                out.flush();
                String response = new String(out.toByteArray());
                Dialog.alert("response is ::"+response);
                } catch (Exception e) {
             Dialog.alert(e.getMessage());
          } finally {
             if (out != null) {
                try {
                    out.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                    Dialog.alert(e.getMessage());
                }
             }
             if (in != null) {
                try {
                    in.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                    Dialog.alert(e.getMessage());
                }
             }
             if (conn != null) {
                try {
                    conn.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                    Dialog.alert(e.getMessage());
                }
             }
          }
        }
    }
更新::

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Vector;

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

import net.rim.device.api.applicationcontrol.ApplicationPermissions;
import net.rim.device.api.applicationcontrol.ApplicationPermissionsManager;
import net.rim.device.api.ui.Field;
import net.rim.device.api.ui.FieldChangeListener;
import net.rim.device.api.ui.component.ButtonField;
import net.rim.device.api.ui.component.CheckboxField;
import net.rim.device.api.ui.component.Dialog;
import net.rim.device.api.ui.container.MainScreen;

import com.rim.samples.jsonme.cakeorder.org.json.me.JSONArray;
import com.rim.samples.jsonme.cakeorder.org.json.me.JSONObject;

public class UiMainscreen extends MainScreen implements FieldChangeListener {

    public UiMainscreen() {
        ButtonField loginButton;

        loginButton = new ButtonField("Go", ButtonField.CONSUME_CLICK);
        loginButton.setChangeListener(this);

        add(loginButton);

    }

    public void fieldChanged(Field field, int context) {
        // TODO Auto-generated method stub
        if (field instanceof ButtonField) {

            Dialog.alert("Message");
            HttpConnection conn = null;
            InputStream in = null;
            ByteArrayOutputStream out = null;
            try {
                // String url =
                // "http://api.twitter.com/1/users/show.json?screen_name=Kaka";
                String url = "http://docs.blackberry.com/sampledata.json";

                conn = (HttpConnection) Connector.open(url, Connector.READ);
                conn.setRequestMethod(HttpConnection.GET);

                int code = conn.getResponseCode();
                if (code == HttpConnection.HTTP_OK) {
                    in = conn.openInputStream();
                    out = new ByteArrayOutputStream();
                    byte[] buffer = new byte[in.available()];
                    int len = 0;
                    while ((len = in.read(buffer)) > 0) {
                        out.write(buffer);
                    }
                    out.flush();
                    String response = new String(out.toByteArray());
                    Dialog.alert("response is ::" + response);

                    /*
                     * JSONObject resObject = new JSONObject(response); String
                     * key = resObject.getString("vehicleType");
                     * 
                     * Vector resultsVector = new Vector(); JSONArray jsonArray
                     * = resObject.getJSONArray("name"); if (jsonArray.length()
                     * > 0) { for (int i = 0; i < jsonArray.length();i++) {
                     * Vector elementsVector = new Vector(); JSONObject jsonObj
                     * = jsonArray.getJSONObject(i);
                     * elementsVector.addElement(jsonObj
                     * .getString("experiencePoints"));
                     * elementsVector.addElement
                     * (jsonObj.getString("Insert Json Array Element Key2"));
                     * resultsVector.addElement(elementsVector); } }
                     */
                }
            } catch (Exception e) {
                Dialog.alert(e.getMessage());
            } finally {
                if (out != null) {
                    try {
                        out.close();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                        Dialog.alert(e.getMessage());
                    }
                }
                if (in != null) {
                    try {
                        in.close();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                        Dialog.alert(e.getMessage());
                    }
                }
                if (conn != null) {
                    try {
                        conn.close();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                        Dialog.alert(e.getMessage());
                    }
                }
            }
        }

    }
}
import java.io.ByteArrayOutputStream;
导入java.io.IOException;
导入java.io.InputStream;
导入java.util.Vector;
导入javax.microedition.io.Connector;
导入javax.microedition.io.HttpConnection;
导入net.rim.device.api.applicationcontrol.ApplicationPermissions;
导入net.rim.device.api.applicationcontrol.ApplicationPermissionsManager;
导入net.rim.device.api.ui.Field;
导入net.rim.device.api.ui.FieldChangeListener;
导入net.rim.device.api.ui.component.ButtonField;
导入net.rim.device.api.ui.component.CheckboxField;
导入net.rim.device.api.ui.component.Dialog;
导入net.rim.device.api.ui.container.main屏幕;
导入com.rim.samples.jsonme.cakeorder.org.json.me.JSONArray;
导入com.rim.samples.jsonme.cakeorder.org.json.me.JSONObject;
公共类UiMainscreen扩展MainScreen实现FieldChangeListener{
公共UiMainscreen(){
按钮字段登录按钮;
loginButton=新建按钮字段(“Go”,按钮字段。单击);
setChangeListener(这个);
添加(登录按钮);
}
公共无效字段已更改(字段,int上下文){
//TODO自动生成的方法存根
if(按钮字段的字段实例){
对话框。警报(“消息”);
HttpConnection conn=null;
InputStream in=null;
ByteArrayOutputStream out=null;
试一试{
//字符串url=
// "http://api.twitter.com/1/users/show.json?screen_name=Kaka";
字符串url=”http://docs.blackberry.com/sampledata.json";
conn=(HttpConnection)Connector.open(url,Connector.READ);
conn.setRequestMethod(HttpConnection.GET);

int code=conn.getResponseCode(); if(code==HttpConnection.HTTP\u OK){ in=conn.openInputStream(); out=新的ByteArrayOutputStream(); byte[]buffer=新字节[in.available()]; int len=0; 而((len=in.read(buffer))>0){ 输出。写入(缓冲区); } out.flush(); 字符串响应=新字符串(out.toByteArray()); Dialog.alert(“响应为::”+响应); /* *JSONObject resObject=新JSONObject(响应);字符串 *key=resObject.getString(“vehicleType”); * *Vector resultsVector=new Vector();JSONArray JSONArray *=resObject.getJSONArray(“name”);if(jsonArray.length() *>0){for(inti=0;i
请尝试以下代码-

final ButtonField b=new ButtonField("JSON");
    add(b);

    FieldChangeListener listener=new FieldChangeListener() {
        public void fieldChanged(Field field, int context) {
            if(field==b){

                try {
                    String httpURL = "http://docs.blackberry.com/sampledata.json";  
                    HttpConnection httpConn;
                    httpConn = (HttpConnection) Connector.open(httpURL);
                    httpConn.setRequestMethod(HttpConnection.POST);
                    DataOutputStream _outStream = new DataOutputStream(httpConn.openDataOutputStream());
                    byte[] request_body = httpURL.getBytes();
                    for (int i = 0; i < request_body.length; i++) {
                    _outStream.writeByte(request_body[i]);
                    }
                    DataInputStream _inputStream = new DataInputStream(
                    httpConn.openInputStream());
                    StringBuffer _responseMessage = new StringBuffer();
                    int ch;
                    while ((ch = _inputStream.read()) != -1) {
                    _responseMessage.append((char) ch);
                    }
                    String res = (_responseMessage.toString());
                    String responce = res.trim();

                    Dialog.alert(responce);

                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

            }

        }
    };
    b.setChangeListener(listener);
最终按钮字段b=新按钮字段(“JSON”);
添加(b);
FieldChangeListener listener=新的FieldChangeListener(){
公共无效字段已更改(字段,int上下文){
如果(字段==b){
试一试{
字符串httpURL=”http://docs.blackberry.com/sampledata.json";  
HttpConnection-httpConn;
httpConn=(HttpConnection)Connector.open(httpURL);
setRequestMethod(HttpConnection.POST);
DataOutputStream _outStream=新的DataOutputStream(httpConn.openDataOutputStream());
byte[]请求_body=httpURL.getBytes();
for(int i=0;i