Java 从blackberry应用程序发送JSON请求
如何从作为客户端的blackberry应用程序向服务器发送JSON请求,以便从服务器获取信息,以便在BB应用程序中使用它们 我在Windows7下使用BlackBerryEclipse 我试试这个代码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
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连接服务
- 要使用现有的启动配置,请在BlackBerry Simulator下单击启动配置李>
- 要创建新的启动配置,右键单击BlackBerry Simulator,选择new
或者,当使用模拟器时,您可以添加
;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连接服务
- 要使用现有的启动配置,请在BlackBerry Simulator下单击启动配置李>
- 要创建新的启动配置,右键单击BlackBerry Simulator,选择new
或者,当使用模拟器时,您可以添加
;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模拟器)?