2015-07-27 3 views
0

я использовать HTTPClient для передачи данных в PHP файл как этотможет использовать httpClient в Android Studio?

PHP

<?php 
    echo $_POST['My_Data']; 
?> 

и я добавить <uses-permission android:name="android.permission.INTERNET" /> к AndroidManifest.xml для подключения интернета.

это моя основная деятельность

SendActivity.java

public class SendActivity extends ActionBarActivity { 

    String myJSON; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_send); 

     SendData(); 
    } 

    public void SendData(){ 
     class GetDataJSON extends AsyncTask<String, Void, String>{ 

      private ProgressDialog pDialog; 
      private InputStream is = null; 
      private String url = "http://----/send.php"; 
      private String page_output = ""; 

      @Override 
      protected String doInBackground(String... args) { 

       try { 
         // Building Parameters 
       List<NameValuePair> params = new ArrayList<NameValuePair>(); 
       params.add(new BasicNameValuePair("My_Data", "this is my data")); 
       // defaultHttpClient 
       DefaultHttpClient httpClient = new DefaultHttpClient(); 
       HttpPost httpPost = new HttpPost(url); 
       httpPost.setEntity(new UrlEncodedFormEntity(params)); 

       HttpResponse httpResponse = httpClient.execute(httpPost); 
       HttpEntity httpEntity = httpResponse.getEntity(); 
       is = httpEntity.getContent(); 
      } catch (UnsupportedEncodingException e) { 
       e.printStackTrace(); 
      } catch (ClientProtocolException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      try { 
       BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"), 8); 
       StringBuilder sb = new StringBuilder(); 

       String line = null; 
       while ((line = reader.readLine()) != null) 
       { 
        sb.append(line + "\n"); 
       } 
       is.close(); 
       page_output = sb.toString(); 

       Log.i("LOG", "page_output --> " + page_output); 
      } catch (Exception e) { 
       Log.e("Buffer Error", "Error converting result " + e.toString()); 
      } 

      return page_output; 
     } 

      @Override 
      protected void onPostExecute(String result){ 
       Log.i("LOG", " onPostExecute -> " + result); 
       myJSON=result; 
       Log.i("LOG", "myJSON" + myJSON); 
      } 
     } 
     GetDataJSON g = new GetDataJSON(); 
     Log.i("LOG", " GetDataJSON "); 
     g.execute(); 
    } 
} 

я использую Android Studio и много кода осуждается И мои данные не отправить PHP и я не могу получить данные из PHP

httpClient Истекает с Android Studio или я ошибаюсь?

+1

я изменить данные между PHP и андроидом использованием HTTPClient с затмением вы можете использовать другой путь [лучший способ для отправки/получения данных из PHP] (http://stackoverflow.com/questions/31639439/androidbest-way-for-send-get-data-from-php), ваш код не ошибается – sadegh

ответ

3

Http клиент устарел в уровне апи 22. Таким образом, вы должны использовать открытые OpenUrlConnection. Вы можете использовать этот код

public class FetchUrl { 

    private URL url; 

    public String fetchUrl(String urlString, HashMap<String, String> values) { 
     String response = ""; 
     try { 
      url = new URL(urlString); 
      Log.d("url string", urlString); 
      HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
      conn.setReadTimeout(15000); 
      conn.setConnectTimeout(15000); 
      conn.setRequestMethod("POST"); 
      conn.setDoInput(true); 
      conn.setDoOutput(true); 

      OutputStream os = conn.getOutputStream(); 
      BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(
        os, "UTF-8")); 
      writer.write(getPostDataString(values)); 

      writer.flush(); 
      writer.close(); 
      os.close(); 
      int responseCode = conn.getResponseCode(); 

      if (responseCode == HttpsURLConnection.HTTP_OK) { 
       String line; 
       BufferedReader br = new BufferedReader(new InputStreamReader(
         conn.getInputStream())); 
       while ((line = br.readLine()) != null) { 
        response += line; 
       } 
      } else { 
       response = ""; 

       throw new Exception(responseCode + ""); 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

     return response; 
    } 

    private String getPostDataString(HashMap<String, String> params) 
      throws UnsupportedEncodingException { 
     StringBuilder result = new StringBuilder(); 
     boolean first = true; 
     for (Map.Entry<String, String> entry : params.entrySet()) { 
      if (first) 
       first = false; 
      else 
       result.append("&"); 

      result.append(URLEncoder.encode(entry.getKey(), "UTF-8")); 
      result.append("="); 
      result.append(URLEncoder.encode(entry.getValue(), "UTF-8")); 
     } 
     Log.d("query string", result.toString()); 
     return result.toString(); 
    } 

} 
1

попробовать ниже код

 HttpEntity httpEntity = httpResponse.getEntity(); 
    if (resEntity != null) { 

    String response_From_Server = EntityUtils.toString(resEntity); 
    Log.e("","response from server is : "+response_From_Server); 
} 
+0

что такое 'resEntity' ?! 'resEntity не может быть разрешено переменной ' –

Смежные вопросы