使用AsyncTask将发布数据发送到服务器

时间:2019-11-27 07:59:47

标签: android

我想异步发送一些数据到服务器。我有这样的数据

customerId: 12,
itemId: [{"itemId":"40","qty":"2"},{"itemId":"41","qty":"2"}]
note:some note here
reason:damaged

我想将上述数据发送到服务器,但无法将数据发送到服务器。我在说W / System.err时出错了:java.io.FileNotFoundException:https://testgrocbay.tech/api/app-manager/get-functionality/return/new-return

请检查我的代码

private class AsyncNewreturn extends AsyncTask<String, String, String> {
    HttpURLConnection conn;
    URL url = null;

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

    @Override
    protected String doInBackground(String... params) {
        try {
            url = new URL(API_PATH + "return/new-return");
        } catch (MalformedURLException e) {
            return "exception";
        }
        try {
            conn = (HttpURLConnection) url.openConnection();
            conn.setReadTimeout(READ_TIMEOUT);
            conn.setConnectTimeout(CONNECTION_TIMEOUT);
            conn.setRequestMethod("POST");
            conn.setDoInput(true);
            conn.setDoOutput(true);

            Uri.Builder builder = new Uri.Builder()
                    .appendQueryParameter("customerId", "12")
                    .appendQueryParameter("note", "some note here")
                    .appendQueryParameter("reason", "item damaged");

            builder = builder.appendQueryParameter("itemId[" + 0 + "][itemId]", "40")
                    .appendQueryParameter("itemId[" + 0 + "][qty]", "2");
            builder = builder.appendQueryParameter("itemId[" + 1 + "][itemId]", "41")
                    .appendQueryParameter("itemId[" + 1 + "][qty]", "1");

            Log.e("Items: ", String.valueOf(builder));

            String query = builder.build().getEncodedQuery();

            OutputStream os = conn.getOutputStream();
            BufferedWriter writer = new BufferedWriter(
                    new OutputStreamWriter(os, "UTF-8"));
            writer.write(query);
            writer.flush();
            writer.close();
            os.close();
            conn.connect();
        } catch (IOException e1) {
            e1.printStackTrace();
            return "exception";
        }

        try {
            InputStream input = conn.getInputStream();
            BufferedReader reader = new BufferedReader(new InputStreamReader(input));
            StringBuilder result = new StringBuilder();
            String line;

            while ((line = reader.readLine()) != null) {
                result.append(line);
            }
            return (result.toString());
        } catch (IOException e) {
            return "exception";
        } finally {
            conn.disconnect();
        }
    }
}

请帮助我...

0 个答案:

没有答案