【问题标题】:No response from JSON没有来自 JSON 的响应
【发布时间】:2016-01-18 09:15:41
【问题描述】:

我正在尝试使用 volley 从服务器中的文件夹中检索图像。该应用程序工作了一次,但是当我从 android studio 运行应用程序时,突然间,我没有收到 JSON 响应,并且出现空白屏幕

package com.example.alex.imagerequestapp;

import android.graphics.Bitmap;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ImageView;

import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.ImageRequest;

public class MainActivity extends AppCompatActivity {
ImageView mImageView;
String url;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    //refernce both the image and the url to the image in the netwrok folder
    mImageView = (ImageView) findViewById(R.id.myImage);
    url = "http://192.168.56.1:80/bio_data_test/images/summerfestival.jpg";

    //begin the ImageRequest
    ImageRequest request = new ImageRequest(url,
            new Response.Listener<Bitmap>() {
                @Override
                public void onResponse(Bitmap bitmap) {
                    mImageView.setImageBitmap(bitmap);
                }
            }, 0, 0, null,
            new Response.ErrorListener() {
                public void onErrorResponse(VolleyError error) {

                }
            });
    // Access the RequestQueue through your AppConroller class.
   // AppController.getmInstance().addToRequestQueue(request);
    AppController.getmInstance().addToRequestQueue(request);


    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                    .setAction("Action", null).show();
        }
    });
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
  }
 }

【问题讨论】:

  • 尝试记录响应
  • 您确定您的 WLAN 已启用?
  • 您是否在清单中添加了互联网权限??
  • 记录您的响应并设置错误图像以确保出现错误mImageView.setImageResource(R.drawable.image_load_error);
  • @ Shree Krishna 我已经这样做了,它会返回错误消息。 @Vivek Mishra 我添加了互联网权限。你想看看我的 android manifest 文件吗

标签: android json android-volley


【解决方案1】:

如果您使用的是模拟器并且您有本地服务器,请使用此 IP 地址10.0.2.2

您可以使用 Picasso 库轻松地将图像从其url 加载到ImageView,它会为您处理网络调用

示例:

Picasso.with(getApplicationContext()).load(image_url).into(mImageView);


where, 
mImageView ===> is your imageView instance after 
image_url ===> url of the image on the server 

要添加Picasso 库,像这样将以下代码添加到build.gradle 文件中的依赖项块中

compile 'com.squareup.picasso:picasso:2.5.2'

你可以使用picasso

【讨论】:

    【解决方案2】:

    我已经能够解决这个问题.. 网址从 192.168.56.1/bio_data_test/images/summerfestival.jpg 更改为 192.168.56.2/bio_data_test/images/summerfestival.jpg。我在 cmd 上运行 ipconfig 后发现了这一点。改IP地址后就可以了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-06
      • 2017-09-24
      • 2017-12-01
      • 2021-10-29
      • 1970-01-01
      • 1970-01-01
      • 2019-02-09
      相关资源
      最近更新 更多