HttP Post method is not working

时间:2017-06-01 06:38:41

标签: java android

I am trying to use this method i also tried to impot libriries but all in vain. Kindly help me. Not any HTTPClient library is showing on my andriod studio. Help would be appreciated

 public String getHttpPost(String url,ContentValues) {
        StringBuilder str = new StringBuilder();

        HttpClient client = new DefaultHttpClient();
        HttpPost httpPost = new HttpPost(url);

        try {
            httpPost.setEntity(new UrlEncodedFormEntity(params));
            HttpResponse response = client.execute(httpPost);
            StatusLine statusLine = response.getStatusLine();
            int statusCode = statusLine.getStatusCode();
            if (statusCode == 200) { // Status OK
                HttpEntity entity = response.getEntity();
                InputStream content = entity.getContent();
                BufferedReader reader = new BufferedReader(new InputStreamReader(content));
                String line;
                while ((line = reader.readLine()) != null) {
                    str.append(line);
                }
            } else {
                Log.e("Log", "Failed to download result..");
            }
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return str.toString();
    }

2 个答案:

答案 0 :(得分:0)

哦!你还在使用HttpClient。你可以使用HttpURLConnection,Volley等。现在不推荐使用HttpClient类。还要添加Internet权限,并在gradle文件中依赖。

 HttpURLConnection urlConnection = null;
                try {
                    URL urlToRequest = new URL(_url);
                    urlConnection = (HttpURLConnection) urlToRequest.openConnection();
                    urlConnection.setConnectTimeout(30000);
                    urlConnection.setReadTimeout(30000);
                    urlConnection.setDoOutput(true);
                    urlConnection.setDoInput(true);
                    urlConnection.setRequestProperty("Content-Type", "application/json");
                    urlConnection.setRequestProperty("Accept", "application/json");

                    if (_authenticationKey != null) {
                        urlConnection.setRequestProperty(_authenticationKey, _authenticationValue);
                    }
                    if (_jsonPacket != null) {
                        OutputStreamWriter wr = new OutputStreamWriter(urlConnection.getOutputStream());
                        wr.write(_jsonPacket);
                        wr.flush();
                    }

                    int statusCode = urlConnection.getResponseCode();

                    JSONObject job;
                    if (statusCode != HttpURLConnection.HTTP_OK) {
                        InputStream in = new BufferedInputStream(urlConnection.getErrorStream());
                        String responseString = getResponseString(in);
                        if (isJSONValid(responseString)) {
                            job = new JSONObject(responseString);
                            return new PostingResult(job, Constants.IntegerConstants.failureFromWebService, "");
                        } else {
                            return new PostingResult(null, statusCode, Constants.StringConstants.serverCommunicationFailed + "Response code = " + statusCode);
                        }

                    } else {
                        InputStream in = new BufferedInputStream(urlConnection.getInputStream());
                        String responseString = getResponseString(in);
                        if (isJSONValid(responseString)) {
                            job = new JSONObject(responseString);
                            return new PostingResult(job, Constants.IntegerConstants.success, "");
                        } else {
                            return new PostingResult(null, statusCode, Constants.StringConstants.serverCommunicationFailed + Constants.StringConstants.serverReadingResponseFailed);
                        }
                    }

答案 1 :(得分:0)

您可以使用“Volley”库进行网络通话。

例如

  1. 在build.gradle中添加此行(Module:app)

    编译'com.mcxiaoke.volley:library:1.0.19'

  2. 在进行网络通话时,您需要获得互联网许可。因此,在Manifest.xml中添加Internet权限行

    1. 现在你需要在你的类中编写一个小方法,你需要进行网络调用并需要将Hashmap传递给它。 Hashmap包含所有帖子参数。

      private void getJSONResponse(HashMap<String, String> map, String url) {
              pd.show();
              JsonObjectRequest request = new JsonObjectRequest(Request.Method.POST, url, new JSONObject(map), new Response.Listener<JSONObject>() {
                  @Override
                  public void onResponse(JSONObject response) {
                      Log.d("Mayur", "Response : " + response);
                      //tv_res.setText(response.toString());
                      //pd.dismiss();
                  }
              }, new Response.ErrorListener() {
                  @Override
                  public void onErrorResponse(VolleyError error) {
                      Toast.makeText(MainActivity.this, "Error Occured", Toast.LENGTH_SHORT).show();
                      //tv_res.setText("ERROR");
                      //pd.dismiss();
                  }
              });
      request.setRetryPolicy(new DefaultRetryPolicy(20000,DefaultRetryPolicy.DEFAULT_MAX_RETRIES,DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));Volley.newRequestQueue(this).add(request);}
      
    2. 现在在你的onCreate方法或任何其他方法中,只需创建一个post参数的Hashmap,并将其传递给带有post url的方法。

      例如

      HashMap<String, String> map = new HashMap<String, String>();
              map.put("fname", "Mayur");
              map.put("lname", "Thakur");
      getJSONResponse(map,<your url>);