使用node.js(express)中的JSON和android客户端发送图像

时间:2017-01-09 19:01:31

标签: javascript android json node.js express

我尝试使用node.js将图像发送到Android客户端,但首先通过服务器创建的JSON对象发送URL。当它试图设置图像时,它不起作用,我不知道为什么。在我拥有应用节点的文件的文件夹中,我有一个调用Images的文件,其中我的图像名为basket.png。当服务器提供JSON时,它会被移动设备接收(作为字符串)然后通过URL下载图像(它在我称为LeerConsulta的类中进行下载)。

服务器代码就是这个(我只编写了我觉得有用的部分):

var express= require('express');
var bodyParser= require('body-parser');
var fs = require('graceful-fs');
var app= express();
app.use(express.static('Images'));
app.post('/Imagen',function(req, res){
    var dir= "http://10.0.0.23:8080/Images/basket.png";
    var obj={"img":dir};
    res.json(obj);
});

以下是我下载图片的地方:

static String content="", data="";

    public LeerConsulta(String Content, String Dat)
    {
        content=Content;
        data=Dat;
    }
protected Bitmap getBitMap()
    {
        try{
            JSONObject jsonResponse = new JSONObject(content);
            String src=jsonResponse.getString(data);
            java.net.URL url = new java.net.URL(src);
            HttpURLConnection con=(HttpURLConnection)url.openConnection();
            con.setDoInput(true);
            con.connect();
            InputStream input=con.getInputStream();
            Bitmap myBitmap=BitmapFactory.decodeStream(input);
            return myBitmap;
        }
        catch(Exception e){
            e.printStackTrace();
            return null;
        }
    }

最后,这是我显示图像的地方:

public class Accedido extends AppCompatActivity {

    ImageView imagen;
    Button ok;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_accedido);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        imagen=(ImageView)findViewById(R.id.Img);
        ok=(Button)findViewById(R.id.btnOk);
        ok.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Bitmap img=null;
                Ajax im=new Ajax();
                try {
                    String imagen = im.execute(MainActivity.IP_ADDRESS + "Imagen").get();
                    LeerConsulta lec = new LeerConsulta(imagen, "img");
                    img = lec.getBitMap();
                }
                catch(Exception exc) {
                    Toast.makeText(Accedido.this, exc.toString(), Toast.LENGTH_SHORT).show();
                }
                imagen.setImageBitmap(img);
            }
        });
    }

}

0 个答案:

没有答案