Hirdetés

Új hozzászólás Aktív témák

  • [KgP].Robot

    aktív tag

    Sziasztok!

    Egy AsyncDownloader osztallyal lenne gondom. Ketto is.
    1: onPreExecute metodusban elinditok egy ProgressDialogot, hogy az API-val torteno kommunikacio alatt tudja a user, hogy dolgozunk... Sajnos nem jelenik meg es nem tudom, hogy miert.

    2: OKHTTP respons-nal ha pl 500-as hibakodot kapok vissza, akkor a message-ben "Internal server error" uzenet kerul. Ez azert baj, mert ott egy custom uzenetnek kene lennie, amit visszakuld a szerver. Erre azert lenne szuksegem, mert ez alapjan tudnam kezelni a kiveteleket. De igy, hogy az OKHTTP kicsereli a gyeri uzenetre, sajnos nincs lehetosegem.
    Ezekre szeretnek megoldast talalni.

    Async class:

    public class AsyncDownloader extends AsyncTask<String, Void, String> {

    public static final String TAG = AsyncDownloader.class.getSimpleName();

    private Context context;
    private ProgressDialog dialog;

    public AsyncDownloader(Context ctx) {
    context = ctx;
    }

    @Override
    protected void onPreExecute() {
    super.onPreExecute();

    dialog = new ProgressDialog(context);
    dialog.setMessage("Loading...");
    dialog.setProgressStyle(dialog.STYLE_SPINNER);
    dialog.setCancelable(false);
    dialog.show();
    }

    @Override
    protected String doInBackground(String... params)
    {
    String url = params[0];
    String bodyparam = params[1];
    String user_agent = params[2];
    String content_type = params[3];

    OkHttpClient client = new OkHttpClient();

    MediaType mediaType = MediaType.parse(content_type);
    RequestBody body = RequestBody.create(mediaType, bodyparam);
    Request request = new Request.Builder()
    .url(url)
    .post(body)
    .addHeader("user-agent", user_agent)
    .addHeader("content-type", content_type)
    .build();

    Call call = client.newCall(request);

    Response response = null;

    String jsonData = null;

    try {
    response = call.execute();

    if (response.isSuccessful()) {
    jsonData = response.body().string();

    } else {
    jsonData = null;
    }

    } catch (IOException e) {
    e.printStackTrace();
    }
    return jsonData; //This is returned to onPostExecute()
    }

    @TargetApi(Build.VERSION_CODES.CUPCAKE)
    @Override
    protected void onPostExecute(String jsonData)
    {
    super.onPostExecute(jsonData);
    if (dialog.isShowing()) {
    dialog.dismiss();
    }
    }
    }

    es igy hivom meg:
    response = downloader.execute(list.get(0), list.get(1), list.get(2), list.get(3)).get();

Új hozzászólás Aktív témák