Autore Topic: problema invio e ricezione json  (Letto 343 volte)

Offline jarax

  • Nuovo arrivato
  • *
  • Post: 1
  • Respect: 0
    • Mostra profilo
problema invio e ricezione json
« il: 18 Marzo 2016, 10:23:01 CET »
0
salve , vorrei creare un app in grado di dialogare con un file php in un server e per far ciò dovrei usare json , il problema e che usando una richiesta jsonobject volley riesco solo a ricevere dal file php (esso mi invierà un json con un nome ed un immagine (ecoded base64)) , se invece utilizzo una richiesta custom volley riesco solo ad inviare la json ma il ritoeno mi da un errore , come posso fare?
questa è la procedura con cui riesco solo ad inviare

Codice: [Seleziona]
private void imagesedw(){


    Map<String, String> params = new HashMap<String, String>();
    params.put("pas", "123");

    CustomRequest jsObjRequest = new CustomRequest(Request.Method.POST, "http://"+editTextId.getText().toString().trim()+"/getImagej.php", params, new Response.Listener<JSONObject>() {
       @Override
        public void onResponse(JSONObject response) {
            try {
                String jsonString = response.getString("image");
                byte[] decodedString = Base64.decode(jsonString, Base64.DEFAULT);
                Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length);
                imageView.setImageBitmap(decodedByte);

            } catch (JSONException e) {
                e.printStackTrace();
            }


        }
    }, new Response.ErrorListener() {

        @Override
        public void onErrorResponse(VolleyError response) {
            Log.d("Response: ", response.toString());
        }
    });
    //Creating a Request Queue
    RequestQueue requestQueue = Volley.newRequestQueue(this);

    //Adding request to the queue
    requestQueue.add(jsObjRequest);

}

questo è il custom json
Codice: [Seleziona]
import java.io.UnsupportedEncodingException;
import java.util.Map;

import org.json.JSONException;
import org.json.JSONObject;

import com.android.volley.NetworkResponse;
import com.android.volley.ParseError;
import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.Response.ErrorListener;
import com.android.volley.Response.Listener;
import com.android.volley.toolbox.HttpHeaderParser;

public class CustomRequest extends Request<JSONObject>{

    private Listener<JSONObject> listener;
    private Map<String, String> params;

    public CustomRequest(String url, Map<String, String> params,
                         Listener<JSONObject> reponseListener, ErrorListener errorListener) {
        super(Method.GET, url, errorListener);
        this.listener = reponseListener;
        this.params = params;
    }

    public CustomRequest(int method, String url, Map<String, String> params,
                         Listener<JSONObject> reponseListener, ErrorListener errorListener) {
        super(method, url, errorListener);
        this.listener = reponseListener;
        this.params = params;
    }

    @Override
    protected Map<String, String> getParams() throws com.android.volley.AuthFailureError {
        return params;
    };

    @Override
    protected void deliverResponse(JSONObject response) {
        listener.onResponse(response);
    }

    @Override
    protected Response<JSONObject> parseNetworkResponse(NetworkResponse response) {
        try {
            String jsonString = new String(response.data,
                    HttpHeaderParser.parseCharset(response.headers));
            return Response.success(new JSONObject(jsonString),
                    HttpHeaderParser.parseCacheHeaders(response));

        } catch (UnsupportedEncodingException e) {
            return Response.error(new ParseError(e));
        } catch (JSONException je) {
            return Response.error(new ParseError(je));
        }
    }

}
questa è invece la procedura con cui riesco solo a ricevere
Codice: [Seleziona]
private void downloadImagej()  {




    JsonObjectRequest jsObjRequest = new JsonObjectRequest
            (Request.Method.POST, "http://"+editTextId.getText().toString().trim()+"/getImagej.php", null, new Response.Listener<JSONObject>() {

                @Override
                public void onResponse(JSONObject response) {
                    try {
                        String jsonString = response.getString("image");
                        byte[] decodedString = Base64.decode(jsonString, Base64.DEFAULT);//decodifica file
                        Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length);//trasformo da stringa a bitmap
                        imageView.setImageBitmap(decodedByte);

                    } catch (JSONException e) {
                        e.printStackTrace();
                    }


                }
            }, new Response.ErrorListener() {

                @Override
                public void onErrorResponse(VolleyError error) {
                    Toast.makeText(ViewImage.this,error.toString(),Toast.LENGTH_LONG).show();

                }
            }){










              };


    //Creating a Request Queue
    RequestQueue requestQueue = Volley.newRequestQueue(this);

    //Adding request to the queue
    requestQueue.add(jsObjRequest);
}


questo il file php

Codice: [Seleziona]
$pas = json_decode(($_POST['pas']));


if($pas=="123"){
header('content-type: image/jpeg');
$image = file_get_contents('/var/www/html/uploads/4.png');
 $imagec = base64_encode($image);
echo json_encode(array("image"=>$imagec));
}else{
header('content-type: image/jpeg');
 $image = file_get_contents('/var/www/html/uploads/6.png');
 $imagec = base64_encode($image);
echo json_encode(array("image"=>$imagec));
}