此代码用于查找图书是否可用。
现在,如果例如模拟电子
的书名如果我输入输入就像模拟或电子设备那么它将显示完整的书名模拟电子设备,这意味着第一个n第二个try / catch块已正确执行。
但是当我输入输入为模拟电子设备并且两个字之间有空格时,它会发出错误并显示 “检查您的互联网连接 “即使我的互联网连接正常。它捕获了第一次尝试/捕获块中的错误,这应该不会发生。由于“空间”,我收到了错误。
try {
response = CustomHttpClient.executeHttpPost(
"http://duh.com/lol.php?name="+input,
postParameters);
String result = response.toString();
try{
returnString = "";
JSONArray jArray = new JSONArray(result);
for(int i=0;i<jArray.length();i++){
JSONObject json_data = jArray.getJSONObject(i);
Log.i("log_tag","ID: "+json_data.getInt("ID")+
", Bookname: "+json_data.getString("Bookname")+
);
returnString += "\n" + "Book+ json_data.getString("Bookname");
}
}
catch(JSONException e){
Toast toast = Toast.makeText(getBaseContext(), "Book is not availabe" ,Toast.LENGTH_LONG);
toast.show();
toast.getView().postDelayed(new Runnable() {
@Override
public void run() {
startActivity(new Intent(getBaseContext(), MainActivity.class));
finish();
}
}, 3500);
}
try{
tv.setText(returnString);
}
catch(Exception e){
Toast.makeText(getBaseContext(), "Error in Display" ,Toast.LENGTH_LONG).show();;
}
}
catch (Exception e) {
Toast toast = Toast.makeText(getBaseContext(), "Check your Internet connection" ,Toast.LENGTH_LONG);
toast.show();
toast.getView().postDelayed(new Runnable() {
@Override
public void run() {
startActivity(new Intent(getBaseContext(), MainActivity.class));
finish();
}
}, 3500);
};
}
LOG cat错误:
04-22 20:51:52.589: E/log_tag(1322): Check your internet connection!!java.lang.IllegalArgumentException: Illegal character in query at index 52: http://duh.com/lol.php?name=analog electonics
04-22 20:51:52.759: W/EGL_emulation(1322): eglSurfaceAttrib not implemented
答案 0 :(得分:1)
根据你的logcat错误:
04-22 20:51:52.589: E/log_tag(1322): Check your internet connection!!java.lang.IllegalArgumentException: Illegal character in query at index 52: http://duh.com/lol.php?name=analog electonics
您的查询中包含非法字符。
不允许在其中包含空格字符而不对其进行编码(请参阅this page for more details),因此您需要在请求页面之前对查询字符串进行编码。
请参阅this SO answer了解在Android上编码网址的正确方法