2017-06-01 146 views
0

我試圖使用這種方法,我也試圖給libriries,但一切徒勞。請幫助我。沒有任何HTTPClient庫在我的andriod studio上顯示。幫助仍然使用的是HttpClient.You可以使用HttpURLConnection類,排球等HttpClient的類現在deprecated.Also添加Internet權限,dependensies在gradle這個文件理解HttP Post方法不起作用

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(); 
    } 
+0

您是否在您的gradle文件中添加了依賴關係? – Prexx

+0

您是否在AndroidManifeast.xml中添加了Internet權限 –

+0

您是否想要另一種方法進行網絡調用,例如使用庫如volley或Retrofit? –

回答

0

哦!

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); 
         } 
        } 
+0

我已經添加了INTERNET權限並且還添加了依賴關係 –

0

您可以使用「Volley」庫進行網絡調用。

例如。

  1. 中的build.gradle加入這一行(模塊:APP)

    編譯 'com.mcxiaoke.volley:圖書館:1.0.19'

  2. 當你正在網絡呼叫,您需要互聯網許可。因此,添加Internet權限行的Manifest.xml

  • 現在你需要編寫你的類裏面的小方法,你需要讓網絡通話和需要將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);} 
    
  • 現在,在您的onCreate方法或任何其他方法只是創建後的參數的HashMap和它傳遞給該方法與帖子的網址。

    例如。

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

    改造是另一個需要考慮的好的庫。 – nasch

    +0

    是的,它是....... –