谁能告诉我如何解决这个问题....为什么不工作我试图asynctask连接到服务器,所以它可以在单独的线程
private class SticketFunctionTask extends AsyncTask<String, Void, Void> {
@Override
protected Void doInBackground(String... string) {
try {
//public void SticketFunction(){
//HttpClient
HttpClient SpeedSticket = new DefaultHttpClient();
//Response handler
ResponseHandler<String> res = new BasicResponseHandler();
HttpPost postMethod = new HttpPost("http://www.mysite.php");
//Log.v("log_tag", "+-+-+-+-+-+-+-+-+- Done: HTTP Post Sending Stickit to Server");
//Log.v("log_tag", "+-+-+-+-+-+-+-+-+- sTICKET: " + z.getString(1) + " " + z.getString(2) + " " + z.getString(3) + " " + z.getString(4));
try {
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(5);
nameValuePairs.add(new BasicNameValuePair("bookName", z.getString(1)+""));
nameValuePairs.add(new BasicNameValuePair("bookAuth", z.getString(2)+""));
nameValuePairs.add(new BasicNameValuePair("ISBN", z.getString(3)+""));
nameValuePairs.add(new BasicNameValuePair("LibNumber", z.getString(4)+""));
//Encode and set entity
postMethod.setEntity(new UrlEncodedFormEntity(nameValuePairs, HTTP.UTF_8));
//Execute
String response = SpeedSticket.execute(postMethod, res).replaceAll("<(.|n)*?>","");
if (response.equals("Done")){
//Log.v("log_tag", "!!!!!!!!!!!!!!!!!! SticketFunction got a DONE!");
}
else Log.v("log_tag", "!!!!!!!?????????? SticketFunction Bad or no response: " + response);
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
//Log.v("log_tag", "???????????????????? SticketFunction Client Exception");
} catch (IOException e) {
// TODO Auto-generated catch block
//Log.v("log_tag", "???????????????????? IO Exception");
}
}
}
}
如果您使用的是Eclipse,请选择所有代码并转到Source -> Correct缩进(或按Ctrl-I)。然后你会看到你有两个try块,但是两个catch块属于第二次尝试。因此,在第一次尝试时需要一个catch或finally block。
我认为最简单的解决方法是在第二次尝试时删除该行。