2017-03-07 142 views
0

我之前使用HttpClient來調用我的PHP腳本,但因爲它總是被棄用,所以我在互聯網上閱讀這個URL是新的方式來做到這一點。我試圖執行它,但腳本沒有執行。當我從瀏覽器運行它時,我的腳本會在手機上發送通知,在通過代碼調用時,我沒有收到任何通知。這裏是我的代碼:不能從Android執行的PHP腳本

package jss.phpcalling; 

import android.os.AsyncTask; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.util.Log; 

import java.net.HttpURLConnection; 
import java.net.URL; 


public class MainActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     new automessage().execute(); 
    } 


    private class automessage extends AsyncTask<Void, Void, Void> { 

     @Override 
     protected Void doInBackground(Void... voids) { 
      try { 
       URL url = new URL("full path of my php"); 

    HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
      conn.connect(); 
      int d = conn.getResponseCode(); 
      System.out.print(d); 
      Log.e("Done", "Called"); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     return null; 
    } 
} 

我還缺少什麼讓它工作?

編輯: 更新的代碼和刪除不需要的行,響應爲空,沒有值正在打印。

+0

「不工作」是非常通用的。告訴我們什麼沒有按預期工作 – emaillenin

+0

我編輯的查詢,實際上我的PHP腳本不運行使用代碼。它通過瀏覽器打開時發送通知,但不通過代碼。 – Panache

+0

如果您確實想從後端獲取一些信息,請從php代碼返回json或xml輸出。使用解析器檢索數據到應用程序 –

回答

0

我給你老兄:

public class MainActivity extends AppCompatActivity { 

Button send, update, restart; 
private SharedPreferences speicher; 
TextView tv, titel, tvScore; 
final String scriptURLstring = "http://.../yourphp.php"; 
int score; 

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

    init(); 
} 

private void init() { 
    tv = (TextView) findViewById(R.id.textView1); 
    tvScore = (TextView) findViewById(R.id.tScore); 


    if (internetAvalable()) { 
     sendToServer(string of what you may send to server); 


    } else { 
     Toast.makeText(getApplicationContext(), "no connection", Toast.LENGTH_SHORT).show(); 
    } 

    send.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent b = new Intent(MainActivity.this, Menu.class); 
      startActivity(b); 
      finish(); 
     } 
    }); 

    restart.setOnClickListener(new View.OnClickListener() { 


} 

public void sendToServer(final int score, final String name) { 

    new Thread(new Runnable() { 
     @Override 
     public void run() { 
      try { 
       String textparam = "&text1=" + URLEncoder.encode(name, "UTF-8"); 

       URL scriptURL = new URL(scriptURLstring); 
       HttpURLConnection connection = (HttpURLConnection) scriptURL.openConnection(); 
       connection.setDoOutput(true); 
       connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 
       connection.setFixedLengthStreamingMode(textparam.getBytes().length); 

       OutputStreamWriter writer = new OutputStreamWriter(connection.getOutputStream()); 
       writer.write(textparam); 
       writer.flush(); 
       writer.close(); 

       InputStream answerInputStream = connection.getInputStream(); 
       final String answer = getTextFromInputStream(answerInputStream); 

       runOnUiThread(new Runnable() { 
        @Override 
        public void run() { 
         tv.setText(answer); 
        } 
       }); 
       answerInputStream.close(); 
       connection.disconnect(); 

      } catch (MalformedURLException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 

     } 
    }).start(); 

} 

public String getTextFromInputStream(InputStream is) { 
    BufferedReader reader = new BufferedReader(new InputStreamReader(is)); 
    StringBuilder stringBuilder = new StringBuilder(); 
    String zeile; 
    try { 
     while ((zeile = reader.readLine()) != null) { 
      stringBuilder.append(zeile + "\n"); 
     } 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    return stringBuilder.toString().trim(); 

} 

public boolean internetAvalable() { 
    ConnectivityManager cM = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE); 
    NetworkInfo nwi = cM.getActiveNetworkInfo(); 
    return nwi != null && nwi.isConnectedOrConnecting(); 
} 

}

請詢問如果有什麼不清楚,遺憾的混亂 好運

+0

一些按鈕是不必要的 – Krissini

+0

,如果你只想接收,有一些修改,使...不知道你的PHP腳本看起來像... – Krissini