2016-09-24 19 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; 

} 

我確實允許清單中的Internet權限,加入

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

,但它根本沒有給我結果。起初我以爲可能在PHP腳本中缺少某些東西,但在eclipse中進行測試時它的工作狀態非常好,所以在android部件中一定有某些錯誤或缺失,對吧?

+0

你可以在刷新你的數據並查看你有什麼後添加這個'Log.d(「HTTPSENDER」,「」+ httpURLconnection.getResponseCode());''在某些情況下,這也可以解決你的怪異錯誤。 – user1506104

+0

@ user1506104謝謝,我會給它一個鏡頭,看看會發生什麼! :) – Janono

+0

你有沒有得到響應碼?它工作? – user1506104

回答

0

這是一個非常糟糕的做法 - 使用Retrofit庫來消費REST API。 http://www.vogella.com/tutorials/Retrofit/article.html

+0

是什麼讓它如此糟糕?即時通訊問,因爲我想學習,而不是「保護」我的代碼:) – Janono

+0

沒有什麼'保護' - 你應該爲你的網絡代碼編寫測試,或者,在某些情況下可能不清楚,如果某些API不工作或你使用api的代碼有一些錯誤。另一方面,該庫已經過測試。 –

相關問題