2016-01-30 6 views
1

Прежде чем я использовал Apache Library (org.apach.httpclient), чтобы сделать запрос на скрипт, с параметрами (BasicNameValuePair),URLConnection с параметрами

Тогда Теперь я хочу, чтобы удалить эти библиотеки, чтобы уменьшить размер APK & также потому, что это Устаревшие,

Я пробовал много решений & Многие примеры & ни один из них не работал,

Это кодекс я использую на самом деле (ничего не происходит):

public JSONObject sendRequest(final String link, final HashMap<String, String> values) { 
    JSONObject object = null; 
    Thread thread = new Thread() { 
     @Override 
     public void run() { 

    HttpURLConnection conn; 
    final int CONNECTION_TIMEOUT = 15 * 1000; 
      Log.e("Tag", "Start"); 
    try { 
     URL url = new URL(link); 
     conn = (HttpURLConnection) url.openConnection(); 
     conn.setReadTimeout(CONNECTION_TIMEOUT); 
     conn.setConnectTimeout(CONNECTION_TIMEOUT); 
     conn.setRequestMethod("POST"); 
     conn.setDoInput(true); 
     conn.setDoOutput(true); 
     conn.connect(); 
     Log.e("Tag", "Connect"); 
     if (values != null) { 
      OutputStream os = conn.getOutputStream(); 
      OutputStreamWriter osWriter = new OutputStreamWriter(os, "UTF-8"); 
      BufferedWriter writer = new BufferedWriter(osWriter); 
      Log.e("Tag", "Write " + values); 
      writer.write(getPostData(values)); 

      writer.flush(); 
      writer.close(); 
      os.close(); 
     } 

    } 
    catch (MalformedURLException e) {} 
    catch (IOException e) {} 

     } 

}; 
thread.start(); 
    return object; 
} 

Вызов SendRequest():

HashMap<String, String> values = new HashMap<String, String>(); 
    values.put("Test01", "Test"); 
    values.put("Test02", "Test2"); 
    sendRequest("http://TheWebSite/script.php", values); 

РНР скрипт должен просто записать значение в файле, но ничего не происходит (он работал с Apache HttpPost),

Любые решения?

Благодаря

+0

что возвращает , 'null' или что-нибудь еще? – ELITE

+1

@ELITE это не должно возвращать ничего на Android, это своего рода «аналитическая» система, скрипт php записывает в файл на сервере все –

+0

печатает все ваши исключения .. вы обрабатываете исключения, но не печатаете их. – ELITE

ответ

1

я решил мою проблему с помощью этой:

  String data = ""; 
      try{ 
       data = URLEncoder.encode("Test01", "UTF-8") + "=" + URLEncoder.encode("value1", "UTF-8"); 
       data += "&" + URLEncoder.encode("Test02", "UTF-8") + "=" + URLEncoder.encode("value2", "UTF-8"); 
      } 
      catch(UnsupportedEncodingException e){ 
      e.printStackTrace(); 
      } 

Вместо HashMap строки,

Я также следовал за Recommandation от The Android Developer Doc о совместимости:

 if (Integer.parseInt(Build.VERSION.SDK) < Build.VERSION_CODES.FROYO) { 
     System.setProperty("http.keepAlive", "false"); 
     } 

Это также важно для Ge т кодом_ответа Когда Debugging (шахта была 200 OK):

int responseCode=conn.getResponseCode(); 
Log.e("Tag", "Response Code " + String.valueOf(responseCode)); 

Благодаря @ELITE Для вашей справки & ваш Recommandation об использовании $ _POST вместо $ _REQUEST,

Благодаря