Как мога да POST заявка за низ и да получа данни?

Пробвах приложение на Android 23 и заседнах някъде.

Имам заявка, но тя не е URL формат!!!! Неговият формат String. Публикувам на сървър и връщам данни.

например моят url е=http://api.someurl/app_dev.php/tr/content

И трябва да публикувам някакъв низов параметър като

 {
  "command":"read",
  "ctrl":"summaryOfDay",
  "data":{"date":"08.04.2016"},
  "order":null,
  "limit":null
 }

и трябва да върне някои json данни. Тъй като тази заявка е параметър за търсене!

Моят код е

HttpURLConnection connection=null;
BufferedReader reader=null;

try {
    URL url=new URL(params[0]);
    connection=(HttpURLConnection)url.openConnection();

    InputStream stream=connection.getInputStream();
    reader=new BufferedReader(new InputStreamReader(stream));
    StringBuffer buffer=new StringBuffer();
    String line = "";

    while ((line = reader.readLine())!= null){
        buffer.append(line);
    }
    String sJson = buffer.toString();
    JSONObject mjson = new JSONObject(sJson);




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

return null;

И така, как мога да публикувам тези низове и да получа моята json дата.

Поздрави.


person Rıdvan    schedule 11.07.2016    source източник
comment
Трябва да използвате трета страна като "Retrofit" или "Volley" нещо :)   -  person AndiGeeky    schedule 11.07.2016
comment
Вярвам, че това отговаря на въпроса ви: stackoverflow.com/questions/4205980/.   -  person Desirius    schedule 11.07.2016
comment
Възможен дубликат на Как да изпратите JSON обект през Request с Android?   -  person JEY    schedule 11.07.2016
comment
Трябва да анализирате JsonObject? stackoverflow.com/questions/2591098/how- to-parse-json-in-java или вашият отговор на JSON низ не е правилен. Какъв точно е проблемът?   -  person OneCricketeer    schedule 11.07.2016
comment
Трябва да изпратя параметър и да получа json данни @cricket_007   -  person Rıdvan    schedule 11.07.2016
comment
Хванах те. Да, Volley, OkHttp/Retrofit (или всяка друга HTTP библиотека) биха били много по-прости.   -  person OneCricketeer    schedule 11.07.2016


Отговори (1)


Реших :)

Търсих много часове, опитах много мисли и най-накрая го получих :)

Ако имате параметър за получаване на json данни, например, имате apı за времето и имате нужда от някъде Weather.

По този начин обяснете как се изпраща заявка за низ на API URL и получавате Json данни.

Например моята заявка е,

 {
  "command":"read",
  "ctrl":"summaryOfDay",
  "data":{"date":"08.04.2016"},
  "order":null,
  "limit":null
 }

Имам нужда от тази информация за моите данни.

В края на краищата моят код е Работа.

private class downloadAPI extends AsyncTask<String,String,String>{

    String dateStr;

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

        pDialog = new ProgressDialog(MainActivity.this);
        pDialog.setMessage("Akış Bilgileri Getiriliyor...");
        pDialog.setIndeterminate(true);
        pDialog.setCancelable(false);
        pDialog.show();
    }

    @Override
    protected String doInBackground(String... params) {
        HttpURLConnection connection = null;
        BufferedReader reader = null;

        Date timeNow = new Date();
        DateFormat df = new SimpleDateFormat("dd.MM.yyyy");

        dateStr=df.format(timeNow)+"";

        String data="{\"command\":\"read\",\"ctrl\":\"summaryOfDay\",\"data\":{\"date\":\""+dateStr+"\"},\"order\":null,\"limit\":null}";


        try {
            URL url = new URL(params[0]);
            connection = (HttpURLConnection) url.openConnection();
            connection.setDoOutput(true);
            connection.setRequestProperty("Content-Type", "application/json");
            connection.setRequestProperty("Accept", "application/json");
            connection.setRequestMethod("POST");
            connection.connect(); // it still works without this line, don't know why


            OutputStream os = connection.getOutputStream();
            BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os, "UTF-8"));
            writer.write(data);
            writer.close();
            os.close();

            InputStream stream = connection.getInputStream();

            reader = new BufferedReader(new InputStreamReader(stream));

            StringBuffer buffer = new StringBuffer();

            String line = "";
            while ((line = reader.readLine())!= null){
                buffer.append(line);
            }
            String sJson = buffer.toString();
            JSONObject mjson = new JSONObject(sJson);

            return sJson;

        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (JSONException e) {
            e.printStackTrace();
        } finally {
            if(connection != null) {
                connection.disconnect();
            }
            if(reader != null){
                try {
                    reader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return null;
    }

    @Override
    protected void onPostExecute(String result) {
        super.onPostExecute(result);
        pDialog.dismiss();
        mText.setText(result.toString());
    }
}

Благодаря на всички, че ми помогнаха :)

person Rıdvan    schedule 11.07.2016