2017-04-19 4 views
0

ImageView에 삽입 할 본문 (JSON) 및 헤더가있는 POST 메서드를 통해 서버에서 비트 맵을 가져와야합니다.응답시 비트 맵을 얻으려면 POST를 요청하십시오.

나는 Volley의 ImageRequest를 사용해 보았지만 내 이미지의 직접 URL을 전달해야합니다. 이는 발생하지 않습니다. 일부 매개 변수가있는 URL과 JSON (본인이 찾고있는 이미지 데이터를 전송하는 본문)이 있는데 서버가 발견되면 이미지를 가져 오지만 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

당신이 나에게 URL 및 헤더를 제공 할 수 및 – pradeep

+0

매개 변수 ... –

+0

문자열에 반응을 얻고 비트 맵에서 이미지 뷰를 설정하십시오. – 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(); 
         } 
        });