2016-09-24 2 views
2

Недавно я написал некоторый код в java, который должен отправить строку в php-скрипт, и он отлично работает. Однако он отказывается работать, когда я использую его в программе Android. подумал, что кто-то может помочь мне выяснить, в чем проблема!Android html POST не работает, никаких ошибок

public static String main(String x, String y){ 
    if (android.os.Build.VERSION.SDK_INT > 9) 
    { 
     StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); 
     StrictMode.setThreadPolicy(policy); 
}else{ 

     try{ 

      String username = x; 
      String password = y; 

      URL url = new URL(login_url); 
      HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection(); 
      httpURLConnection.setRequestMethod("POST"); 
      httpURLConnection.setDoInput(true); 
      httpURLConnection.setDoOutput(true); 

      OutputStream outputStream = httpURLConnection.getOutputStream(); 
      BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream, "UTF-8")); 

      String post_data = URLEncoder.encode("username","UTF-8")+"="+URLEncoder.encode(username,"UTF-8")+"&" 
        +URLEncoder.encode("password","UTF-8")+"="+URLEncoder.encode(password,"UTF-8"); 

      bufferedWriter.write(post_data); 
      bufferedWriter.flush(); 
      bufferedWriter.close(); 
      outputStream.close(); 

      // LÄSER FRÅN HEMSIDAN 

      InputStream inputStream = httpURLConnection.getInputStream(); 
      BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream,"iso-8859-1")); 
      String result=""; 
      String line=""; 
      while((line = bufferedReader.readLine()) != null){ 

       result += line; 
      } 



      //AVSLUTA CONNECTION 
      bufferedReader.close(); 
      inputStream.close(); 
      httpURLConnection.disconnect(); 

      return result; 

     }catch(Exception e){ 
      e.printStackTrace(); 
     } 
    } 



    return null; 

} 

я позволить разрешение Интернет в манифесте, добавив

<uses-permission android:name="android.permission.INTERNET" /> 

, но он просто не дает мне никакого результата. Сначала я подумал, что, возможно, в скрипте php есть что-то, но он отлично работает при тестировании в eclipse, поэтому должно быть что-то неправильно или отсутствует в части Android, не так ли?

+0

вы можете добавить этот 'Log.d (« HTTPSENDER »,« »+ httpURLconnection.getResponseCode());' после того, как вы очистите свои данные и узнаете, что у вас есть? В некоторых случаях это также может решить вашу странную ошибку. – user1506104

+0

@ user1506104 спасибо, я дам ему шанс и посмотрю, что произойдет! :) – Janono

+0

вы получили код ответа? это сработало? – user1506104

ответ

0

Это ОЧЕНЬ плохая практика - используйте библиотеку дооснащения для использования REST apis. http://www.vogella.com/tutorials/Retrofit/article.html

+0

что делает его настолько плохим? я спрашиваю, потому что я хочу учиться, а не «защищать» мой код :) – Janono

+0

нет ничего «защиты» - вы должны писать тесты для своего сетевого кода, или, в некоторых случаях, может быть неясно, если некоторые api не работают или ваш код для потребления этого api имеет некоторую ошибку. С другой стороны, эта библиотека уже протестирована. –

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