如何在这个android studio代码中发送POST参数

时间:2017-08-09 12:26:59

标签: android post connection http-post

我是Android新手,现在就学习它。我正在开发一个应用程序,我可以成功地从get请求获得响应。现在我想用一个参数执行一个POST请求,这是我到目前为止所提出的:

public class BGTask extends AsyncTask<String, String, String > {

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

        try {
            URL url = new URL(params[0]);
            connection = (HttpURLConnection) url.openConnection();
            connection.setRequestMethod("POST");
            //I want to pass the id parameter
            connection.connect();
            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 finalJson = buffer.toString();

            JSONObject parentObject = new JSONObject(finalJson);
            int status = parentObject.getInt("status");


            if(status == 1) {
                color = parentObject.getString("bgcolor");
            }

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

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

        return color;
    }
}

变量颜色为十六进制代码,即#FF0089

1 个答案:

答案 0 :(得分:2)

**使用排球库进行GET,POST和网络调用,这非常简单有效**

  

首先创建AppController.java

public class AppController extends Application {

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

    private RequestQueue mRequestQueue;
    private ImageLoader mImageLoader;

    private static AppController mInstance;

    @Override
    public void onCreate() {
        super.onCreate();
        mInstance = this;
    }

    public static synchronized AppController getInstance() {
        return mInstance;
    }

    public RequestQueue getRequestQueue() {
        if (mRequestQueue == null) {
            mRequestQueue = Volley.newRequestQueue(getApplicationContext());
        }

        return mRequestQueue;
    }

    public <T> void addToRequestQueue(Request<T> req, String tag) {
        req.setTag(TextUtils.isEmpty(tag) ? TAG : tag);
        getRequestQueue().add(req);
    }

    public <T> void addToRequestQueue(Request<T> req) {
        req.setTag(TAG);
        getRequestQueue().add(req);
    }

    public void cancelPendingRequests(Object tag) {
        if (mRequestQueue != null) {
            mRequestQueue.cancelAll(tag);
        }
    }
    public ImageLoader getImageLoader() {
        getRequestQueue();
        if (mImageLoader == null) {
            mImageLoader = new ImageLoader(this.mRequestQueue,
                    new LruBitmapCache());
        }
        return this.mImageLoader;
    }

    public void setConnectivityListener(ConnectivityReceiver.ConnectivityReceiverListener listener) {
        ConnectivityReceiver.connectivityReceiverListener = listener;
    }
} 
  

第二次发出POST请求

public void Send() {
        final String First = "";
        final String Second = "";


        StringRequest stringRequest = new StringRequest(Request.Method.POST, CREATEORDER_URL,
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                        Log.e("RESPONSE", response);

                        JSONObject jObj = null;
                        try {
                            jObj = new JSONObject(response);
                            String success = jObj.getString("success");
                            String errorMessage = jObj.getString("message");

                            if (success.equals("")) {

                                Intent intent = new Intent(SendGiftActivity.this, PayScreenActivity.class);
                                startActivity(intent);
                                finish();
                            } else {
                                Toast.makeText(SendGiftActivity.this, errorMessage, Toast.LENGTH_LONG).show();
                            }

                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                        //  Toast.makeText(SignUpActivity.this, response, Toast.LENGTH_LONG).show();
                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        Toast.makeText(SendGiftActivity.this, error.toString(), Toast.LENGTH_LONG).show();
                    }
                }) {
            @Override
            protected Map<String, String> getParams() {
                Map<String, String> params = new HashMap<String, String>();
                params.put(KEY_FIRST_PARAMETERS, First);
                params.put(KEY_SECOND_PARAMETER, Second);


                return params;
            }

        };

        RequestQueue requestQueue = Volley.newRequestQueue(this);
        requestQueue.add(stringRequest);
    }
  

包括排球图书馆

 compile 'com.android.volley:volley:1.0.0'
  

不要忘记在清单文件的应用程序标记中添加android:name=".AppController"