Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.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
Java 从blackberry应用程序发送JSON请求_Java_Json_Http_Blackberry_Blackberry Eclipse Plugin - Fatal编程技术网

Java 从blackberry应用程序发送JSON请求

Java 从blackberry应用程序发送JSON请求,java,json,http,blackberry,blackberry-eclipse-plugin,Java,Json,Http,Blackberry,Blackberry Eclipse Plugin,如何从作为客户端的blackberry应用程序向服务器发送JSON请求,以便从服务器获取信息,以便在BB应用程序中使用它们 我在Windows7下使用BlackBerryEclipse 我试试这个代码 public void loginRequest() throws IOException, JSONException{ HttpConnection c = null; InputStream is = null; int rc; JSONObject pos

如何从作为客户端的blackberry应用程序向服务器发送JSON请求,以便从服务器获取信息,以便在BB应用程序中使用它们 我在Windows7下使用BlackBerryEclipse

我试试这个代码

public void loginRequest() throws IOException, JSONException{
    HttpConnection c = null;
    InputStream is = null;
    int rc;

    JSONObject postObject = new JSONObject();
    postObject.put("method", method);
    //postObject.put("params", Parameters);

    try{
        c = (HttpConnection)Connector.open(urlPath);

        // Set the request method and headers
        c.setRequestMethod(HttpConnection.GET);
        c.setRequestProperty("Content-Type", "application/json;charset=UTF-8");
        c.setRequestProperty("Content-Length", "" + (postObject.toString().length() - 2));
        c.setRequestProperty("method", "GET");

        // Getting the response code will open the connection,
        // send the request, and read the HTTP response headers.
        // The headers are stored until requested.
        rc = c.getResponseCode();
        if (rc != HttpConnection.HTTP_OK){
            throw new IOException("HTTP response code: " + rc);
        }

        is = c.openInputStream();

        // Get the length and process the data
        int len = (int)c.getLength();
        if (len > 0){
             int actual = 0;
             int bytesread = 0 ;
             byte[] data = new byte[len];
             while ((bytesread != len) && (actual != -1)){
                actual = is.read(data, bytesread, len - bytesread);
                bytesread += actual;
             }
             //Get the JSON String
            System.out.println(new String(data));
        }
        else{
            int ch;
            while ((ch = is.read()) != -1){
                //TODO
                /*
                process((byte)ch);
                */
            }
        }
    }catch (ClassCastException e){
        throw new IllegalArgumentException("Not an HTTP URL");
    }finally {
        if (is != null)
            is.close();
        if (c != null)
            c.close();
    }
   }
我在线程中通过run方法调用这个方法

当模拟器到达(rc=c.getResponseCode();)时,运行代码停止

我调试代码,当代码到达带有此错误的语句时,代码停止

约120000次后本地连接超时


任何帮助

在simulator中运行应用程序时,请确保在Eclipse的“运行配置”或“调试配置”->“模拟器选项卡”->“常规选项卡”中启用了带有simulator的启动移动数据系统连接服务(MDS-CS)

如果未启用,则应查看本指南“”,尤其是“测试使用HTTP连接的BlackBerry设备应用程序”部分。长话短说,您必须启用MDS-CS。启用后,您应该重新启动模拟器。以下是本指南的引文:

启动BlackBerry智能手机模拟器时启动BlackBerry MDS连接服务

  • 在Eclipse®中的“运行”菜单上,单击“调试配置”或“运行配置”
  • 展开BlackBerry模拟器项
  • 完成以下任务之一:
    • 要使用现有的启动配置,请在BlackBerry Simulator下单击启动配置
    • 要创建新的启动配置,右键单击BlackBerry Simulator,选择new
  • 单击模拟器选项卡
  • 单击常规选项卡
  • 选中使用模拟器启动移动数据系统连接服务(MDS-CS)复选框
  • 单击应用
  • 编辑
    或者,当使用模拟器时,您可以添加
    ;deviceside=true
    传递给连接器的url后缀。open()。通过设置deviceside=true您指定应直接从手持设备(在您的情况下为模拟器)打开底层TCP连接,因此将不使用BlackBerry MDS连接服务。以下是基于您的代码的代码片段:

    if (DeviceInfo.isSimulator()) {
        urlPath += ";deviceside=true";
    } else {
        urlPath += connectionDependentSuffix; // suffix that is relevant to
                                              // the desired connection option
    }
    c = (HttpConnection)Connector.open(urlPath);
    

    希望这有帮助。

    在模拟器中运行应用程序时,请确保在Eclipse的“运行配置”或“调试配置”->“模拟器选项卡”->“常规选项卡”中启用了带有模拟器的启动移动数据系统连接服务(MDS-CS)

    如果未启用,则应查看本指南“”,尤其是“测试使用HTTP连接的BlackBerry设备应用程序”部分。长话短说,您必须启用MDS-CS。启用后,您应该重新启动模拟器。以下是本指南的引文:

    启动BlackBerry智能手机模拟器时启动BlackBerry MDS连接服务

  • 在Eclipse®中的“运行”菜单上,单击“调试配置”或“运行配置”
  • 展开BlackBerry模拟器项
  • 完成以下任务之一:
    • 要使用现有的启动配置,请在BlackBerry Simulator下单击启动配置
    • 要创建新的启动配置,右键单击BlackBerry Simulator,选择new
  • 单击模拟器选项卡
  • 单击常规选项卡
  • 选中使用模拟器启动移动数据系统连接服务(MDS-CS)复选框
  • 单击应用
  • 编辑
    或者,当使用模拟器时,您可以添加
    ;deviceside=true
    传递给连接器的url后缀。open()。通过设置deviceside=true您指定应直接从手持设备(在您的情况下为模拟器)打开底层TCP连接,因此将不使用BlackBerry MDS连接服务。以下是基于您的代码的代码片段:

    if (DeviceInfo.isSimulator()) {
        urlPath += ";deviceside=true";
    } else {
        urlPath += connectionDependentSuffix; // suffix that is relevant to
                                              // the desired connection option
    }
    c = (HttpConnection)Connector.open(urlPath);
    

    希望这有帮助。

    我尝试了您的答案,但这并没有解决我的问题我启用了MDS,但我仍然有错误启用MDS后您是否重新启动了模拟器(关闭并重新运行应用程序)?除非重新启动模拟器,否则它不会工作。我重新启动eclipse和模拟器,错误仍然出现(BbiAuth:ERR:net.rim.device.api.crypto.BbiAuth.BbiAuth异常:未配置BBAuth服务记录)程序崩溃后,此错误出现在模拟器的输出日志中。当您打开
    HttpConnection
    @mbaylon时,请将传递给
    Connector.open(urlPath)
    方法的
    urlPath
    上传到
    。您是否偶然使用JRE 7.0.0(9930模拟器)?我尝试了您的答案,但这并没有解决我的问题我启用了MDS,但我仍然存在错误启用MDS后您是否重新启动模拟器(关闭并重新运行应用程序)?除非重新启动模拟器,否则它不会工作。我重新启动eclipse和模拟器,错误仍然出现(BbiAuth:ERR:net.rim.device.api.crypto.BbiAuth.BbiAuth异常:未配置BBAuth服务记录)程序崩溃后,此错误出现在模拟器的输出日志中。当您打开
    HttpConnection
    @mbaylon时,请将传递给
    Connector.open(urlPath)
    方法的
    urlPath
    上传到
    。您是否偶然使用JRE 7.0.0(9930模拟器)?