2017-04-19 18 views
0

ImageViewに配置するボディ(JSON)とヘッダーを含むPOSTメソッドを使用して、サーバーからビットマップを取得する必要があります。応答時にビットマップを取得する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

あなたは私のURLとヘッダを提供できると – 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(); 
         } 
        }); 
関連する問題