2017-04-19 177 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(); 
         } 
        });