2017-04-19 122 views
0

我需要通过POST方法从服务器获取位图,并将正文(JSON)和头放入ImageView中。请求POST以获取位图响应

我试过使用Volley的ImageRequest,但我需要传递我的图像的直接URL,这并没有发生。我有一个带有一些参数和JSON正文(发送我正在寻找的图像数据)的URL,如果我找到它,服务器会为我提供图像,但是我得到了405错误。 我在做什么错?

我试过PostMan的同样的方法,并设法让图像没有问题。

我的代码:

String sEnderecoBaseFoto = Variaveis.WebServicePocket + "/api/Imagem/PegarImagem?redeCodigo=" + Variaveis.Rede + "&largura=120&altura=120"; 

        infoImagem = sResultado.getDadosProduto().getFoto(); 

        RequestQueue sQueueFoto = Volley.newRequestQueue(getActivity()); 

        ImageRequest sRequestFoto = new ImageRequest(sEnderecoBaseFoto, 
          new Response.Listener<Bitmap>() { 
           @Override 
           public void onResponse(Bitmap bitmap) 
           { 
            sProdutos.getDadosProduto().setImagemProduto(bitmap); 
           } 
          }, 0, 0, null, 
          new Response.ErrorListener() 
          { 
           public void onErrorResponse(VolleyError error) { 
            Mensagem.ExibirAlert(getActivity(), String.valueOf(error.networkResponse.statusCode)); 
           } 
          }) 

        { 
         @Override 
         public Map<String, String> getHeaders() throws AuthFailureError { 
          Map<String, String> sHeaders = new HashMap<>(); 
          sHeaders.put("Authorization", "Bearer " + Variaveis.WebServicePocketToken); 
          return sHeaders; 
         } 

         @Override 
         public byte[] getBody() throws AuthFailureError 
         { 
          return new Gson().toJson(infoImagem).getBytes(); 
         } 

         @Override 
         public String getBodyContentType() { 
          return "application/json"; 
         } 
        }; 

        sQueueFoto.add(sRequestFoto); 
+0

你能提供给我的网址和标题和参数 – pradeep

+0

我不能这样做... –

+0

得到的字符串您回应并设置你的imageview在位图 – pradeep

回答

0

这种方式工作得很好:

    RequestQueue sQueueFoto = Volley.newRequestQueue(getActivity()); 

        String sEnderecoBaseFoto = Variaveis.WebServicePocket + "/api/Imagem/PegarImagem?redeCodigo=" + Variaveis.Rede + "&largura=60&altura=60"; 

        final InformacaoImagem infoImagem = sResultado.getDadosProduto().getFoto(); 

        Request sRequestFoto = new Request(Request.Method.POST, sEnderecoBaseFoto, new Response.ErrorListener() { 
         @Override 
         public void onErrorResponse(VolleyError error) { 

         } 
        }) { 
         @Override 
         protected Response parseNetworkResponse(NetworkResponse response) { 
          byte[] sArray = response.data; 
          Bitmap sFoto = BitmapFactory.decodeByteArray(sArray, 0, sArray.length); 
          sProdutos.getDadosProduto().setImagemProduto(sFoto); 


          return Response.success(response, HttpHeaderParser.parseCacheHeaders(response)); 

         } 

         @Override 
         protected void deliverResponse(Object response) { 

         } 

         @Override 
         public Map<String, String> getHeaders() throws AuthFailureError { 
          Map<String, String> sHeaders = new HashMap<>(); 
          sHeaders.put("Authorization", "Bearer " + Variaveis.WebServicePocketToken); 
          return sHeaders; 
         } 

         @Override 
         public byte[] getBody() throws AuthFailureError { 
          return new Gson().toJson(infoImagem).getBytes(); 
         } 

         @Override 
         public String getBodyContentType() { 
          return "application/json"; 
         } 

        }; 
        sQueueFoto.add(sRequestFoto); 
        sQueueFoto.addRequestFinishedListener(new RequestQueue.RequestFinishedListener<Object>() { 
         @Override 
         public void onRequestFinished(Request<Object> request) { 
          CarregarListView(); 
         } 
        });