Android:XMLHttpRequest JavaScript的等价物是什么?

时间:2014-05-14 13:39:49

标签: java android httprequest

我想在块模式下实现Http Request连接。在 JavaScript 中,我使用 XMLHttpRequest onreadystatechange 回调。

Java Android中的等价物是什么?

3 个答案:

答案 0 :(得分:1)

因此,如果您的意思是要进行异步请求,请查看Async Task或更简单的库Volley以进行异步请求

答案 1 :(得分:1)

我认为等效的是HttpURLConnection实例,在发布内容时,您可以在其上调用setChunkedStreamingMode()以启用块模式。您需要在后台线程上执行请求,然后使用AsyncTask将结果发回主线程。

答案 2 :(得分:1)

Android中的所有网络工作必须在不是UI线程的线程上完成。要对此进行归档,开发人员通常会使用ThreadAsyncTask类。

为了进行http调用,Android使用HttpUrlConnection作为基础,像OkHttp这样的好库在它们的核心中使用它们。 Android团队还建议使用HttpUrlConnection进行联网。 检查此链接以获取有关该声明的一些信息

  

http://android-developers.blogspot.com.es/2011/09/androids-http-clients.html

在这里,你有一个完整的工作图像下载任务,基于HttpUrlConnection和AsyncTask

public class ImageDownloaderTask extends AsyncTask<String, Void, Bitmap> {

    private final static String TAG = ImageDownloaderTask.class.getSimpleName();
    @SuppressWarnings("rawtypes")
    private final WeakReference imageViewReference;
    private static Context mContext;
    private static Integer mPlaceholder;

    @SuppressWarnings({ "unchecked", "rawtypes" })
    public ImageDownloaderTask(Context context, ImageView imageView, Integer placeholder) {
        imageViewReference = new WeakReference(imageView);
        mContext = context;
        mPlaceholder = placeholder;
    }

    @Override
    // Actual download method, run in the task thread
    protected Bitmap doInBackground(String... params) {
        return downloadBitmap(params[0]);
    }

    @Override
    // Once the image is downloaded, associates it to the imageView
    protected void onPostExecute(Bitmap bitmap) {
        if (isCancelled()) {
            bitmap = null;
        }
        if (imageViewReference != null) {
            ImageView imageView = (ImageView) imageViewReference.get();
            if (imageView != null) {
                if (bitmap != null) {
                    imageView.setImageBitmap(bitmap);
                } else {
                    imageView.setImageDrawable(imageView.getContext().getResources().getDrawable(mPlaceholder));
                }
            }

        }
    }

    private Bitmap downloadBitmap(String url) {

        Bitmap bmp =null;
        try{
            URL ulrn = new URL(url);
            HttpURLConnection con = (HttpURLConnection)ulrn.openConnection();
            InputStream is = con.getInputStream();
            bmp = BitmapFactory.decodeStream(is);
            if (null != bmp)
                return bmp;
            }catch(Exception e){}
        return bmp;
    }
}

您可以像这样使用此类

new ImageDownloaderTask(getActivity().getApplicationContext(), myImageView, R.drawable.placeholder_drawable).execute("http://mydomain.com/myImage.png");

希望这有助于您澄清有关如何在Android中使用HttpUrlConnection和Threads的想法。