public String getBrotherHood() throws Exception{
client = new DefaultHttpClient();
get = new HttpGet(uri);
res = client.execute(get);
sl = res.getStatusLine();
sCode = sl.getStatusCode();
if(sCode==200)
{
try{
reader = new BufferedReader(new InputStreamReader(res.getEntity().getContent()));
readBuffer = new StringBuffer();
while((nl = reader.readLine())!=null){
readBuffer.append(nl);
}
reader.close();
}finally{
if(reader !=null)
{
try{
reader.close();
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
}
}
return readBuffer.toString();
}
}
我有这个代码,这是写它的正确方法,还是我需要遵循任何编码模式或标准?
请给我一些建议,因为我不知道Android编码。
更新
public class JSONData {
public ArrayList<String> getBrotherHoodJSON() throws JSONException,IOException,Exception{
ArrayList<String> item = new ArrayList<String>();
JSONArray jA = new JSONArray(getBrotherHood());
for(int i=0; i<jA.length(); i++)
{
JSONObject jO = jA.getJSONObject(i);
String n = jO.getString("name");
item.add(n);
Log.i("JsonData:",jO.getString("name"));
}
return item;
}
public String getBrotherHood() throws Exception{
BufferedReader in = null;
String data= null;
HttpClient client = new DefaultHttpClient();
URI uri = new URI("http://fahidmohammad.in/demo/Android/api.php?user=fah");
HttpGet get = new HttpGet();
get.setURI(uri);
HttpResponse res = client.execute(get);
StatusLine sl = res.getStatusLine();
int sCode = sl.getStatusCode();
if(sCode==200)
{
try{
in = new BufferedReader(new InputStreamReader(res.getEntity().getContent()));
StringBuffer sb = new StringBuffer();
String nl;
while((nl = in.readLine())!=null){
sb.append(nl);
}
in.close();
data = sb.toString();
Log.i("Raw Data:",data);
return data;
}finally{
if(in !=null)
{
try{
in.close();
return data;
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
}
}
return data;
}
这是更新版本相同的代码。 照顾所有提到的问题。
它的工作就像一个魅力,但不知道它的稳定性。
答案 0 :(得分:1)
你显然已经声明了方法之外的所有变量,即使它们似乎只在这个方法中使用。这是没有意义的。它可以防止多个对象被垃圾收集。您最好将声明移到方法中。
声明throws Exception
也没有多大意义。如果您声明可能发生的特定异常,或者将所有不可能的异常转换为RuntimeException
,那么您最好不要声明它们。
答案 1 :(得分:0)
有一个默认的代码格式化程序可用eclipse。编写代码后,只需输入“Control + Shift + F”。您的Android代码将自动格式化。
答案 2 :(得分:0)
重新调整readBuffer varible
的一个重点在函数的最后一个函数中,你返回readBuffer.toString()并且只有当状态为200时才初始化它。但是如果状态不是200那么它将为null(假设声明不可见)所以null.toString ()会想到例外。