我是BlackBerry应用程序开发的新手。在HttpConnection
httpcon.getResponseCode()
方法中,我发现了一个愚蠢的错误,导致找不到源错误。
拜托,任何人都可以搞清楚这个错误吗?
这是我的方法:
net.rim.device.api.io.transport.ConnectionFactory cf = new net.rim.device.api.io.transport.ConnectionFactory();
httpConn = (HttpConnection) cf.getConnection(url).getConnection();
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");
httpConn.setRequestProperty("Content-Length",
Integer.toString(postData.length));
os = httpConn.openOutputStream();
os.write(("LoginID=yahoo@sol.com&Password=yah123")
.getBytes("UTF-8"));
os.flush();
os.close();
try {
responseCode = httpConn.getResponseCode();
} catch (IOException ex1) {
//check if it's eof, if yes retrieve code again
if (-1 != ex1.getMessage().indexOf("EOF")) {
try {
responseCode = httpConn.getResponseCode();
} catch (IOException ex2) {
System.out.println(ex2.getMessage());
// handle exception
}
} else {
System.out.println(ex1.getMessage());
// handle exception
}
}
int status = httpConn.getResponseCode();
if (status == HttpConnection.HTTP_OK) {
InputStream input = httpConn.openInputStream();
byte[] bytes = IOUtilities.streamToBytes(input);
StringBuffer raw = new StringBuffer(new String(bytes));
raw.insert(0, "bytes received]\n");
raw.insert(0, bytes.length);
raw.insert(0, '[');
url = raw.toString();
input.close();
} else {
url = "response code = " + status;
}
httpConn.close();
} catch (IOCancelledException e) {
System.out.println(e.toString());
return "";
} catch (IOException e) {
return "";
}
return "";
}
更新:我不想进入getResponseCode()
。 Eclipse在此时停止执行,并显示 Source Not Found 错误。
答案 0 :(得分:2)
@Nate是的,我们步入方法,只有当我们得到运行时错误时才会显示错误。当调用Getresponsecode()时会显示错误
你的eclipse 错误是这样的吗?
getResponseCode()
是HttpConnection
类中的一种方法。这是RIM的代码,不是你的代码。您通常不需要将转换为该代码。调试时,只需在上该行。您唯一想看的是该方法的结果,而不是内部发生的事情。
即使您的项目中包含net_rim_api.jar
,它也只是为您提供RIM类的二进制版本,包括HttpConnection
。它没有为该类提供Java 源代码。要将转换为方法,您还需要拥有源代码。
答案 1 :(得分:1)
我发现了我的错误。当在该URL中调用HttpConnection. getResponseCode()
时,我们必须添加deviceside = true,然后只调用getresponsecode()而不抛出任何http异常。
例如:
httpClient ht = new httpClient();
String str = ht.getHttpClientResponse("https://www.google.co.in;deviceside=true",post);
注意:
(来自@Nate评论)
我们并不总是希望您的连接字符串中包含deviceside=true
。这取决于您是在设备上运行还是在模拟器上运行,以及可用的网络类型。