import android.app.ProgressDialog;
import android.content.Context;
import android.os.AsyncTask;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class MyAsyncTask extends AsyncTask<URL, Void, String> {
private HttpURLConnection urlConnection;
private Context mContext;
private ProgressDialog mDialog;
private TaskListener mListener;
public MyAsyncTask(Context context, TaskListener listener) {
this.mContext = context;
mDialog = new ProgressDialog(mContext);
this.mListener = listener;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
mDialog.setTitle(R.string.app_name);
mDialog.setMessage("Retrieving data...");
mDialog.show();
}
@Override
protected String doInBackground(URL... params) {
StringBuilder result = new StringBuilder();
try {
URL url = params[0];
// Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("10.0.0.1", 8080));
urlConnection = (HttpURLConnection) url.openConnection(/*proxy*/);
urlConnection.setDoInput(true);
urlConnection.setConnectTimeout(20 * 1000);
urlConnection.setReadTimeout(20 * 1000);
if (urlConnection.getResponseCode() == HttpURLConnection.HTTP_OK) {
InputStream in = new BufferedInputStream(urlConnection.getInputStream());
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
String line;
while ((line = reader.readLine()) != null) {
result.append(line);
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
urlConnection.disconnect();
}
return result.toString();
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
mDialog.dismiss();
mListener.onTaskComplete(s);
}
}
那么有没有一种方法,我可以从HTTP URL连接获取JSON而不是一个URL?谢谢 – 2015-04-06 06:24:17
@AssassinShadow刚刚更新了我刚刚得到工作和测试的代码的答案。 – 2015-04-06 07:26:20
您的网址没有参数。你可以发布一些示例发布参数。 – Tarun 2015-12-11 11:06:05