我尝试使用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);
}
});
}
}