[問題] Android和php連接問題

看板AndroidDev作者 (喚月楓晴)時間10年前 (2015/08/20 13:01), 編輯推噓1(105)
留言6則, 4人參與, 最新討論串1/1
小的我參考:http://goo.gl/ti5Yg網站範例做程式 完成後沒有顯示錯誤訊息 模擬器的Toast也有正確顯示出輸入的訊息,但網頁顯示不出結果 以下是我的程式碼: import java.util.ArrayList; import java.util.List; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicNameValuePair; import org.apache.http.protocol.HTTP; import org.apache.http.util.EntityUtils; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class MainActivity extends Activity implements OnClickListener{ private EditText txtMessage; private Button sendBtn; private String uriAPI = "http://localhost/httpPostTest.php"; protected static final int REFRESH_DATA = 0x00000001; Handler mHandler = new Handler(){ @Override public void handleMessage(Message msg) { switch(msg.what) { case REFRESH_DATA: String result = null; if(msg.obj instanceof String) result = (String)msg.obj; if(result != null) Toast.makeText(MainActivity.this, result, Toast.LENGTH_SHORT).show(); break; } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); txtMessage = (EditText)findViewById(R.id.txt_message); sendBtn = (Button)findViewById(R.id.send_btn); if (sendBtn != null) { sendBtn.setOnClickListener(this); } } @Override public void onClick(View v) { if(v ==sendBtn){ if (txtMessage!=null) { String msg=txtMessage.getEditableText().toString(); Thread t = new Thread(new sendPostRunnable(msg)); t.start(); } } } private String sendPostDataToInternet(String strTxt) { HttpPost httpRequest = new HttpPost(uriAPI); List<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair("data",strTxt)); try { httpRequest.setEntity(new UrlEncodedFormEntity(params,HTTP.UTF_8)); HttpResponse httpResponse = new DefaultHttpClient().execute(httpRequest); if (httpResponse.getStatusLine().getStatusCode() == 200) { String strResult = EntityUtils.toString(httpResponse.getEntity()); return strResult; }} catch (Exception e) { Toast.makeText(this, e.getMessage().toString(), Toast.LENGTH_SHORT).show(); e.printStackTrace(); } return null; } class sendPostRunnable implements Runnable{ String strTxt = null; public sendPostRunnable(String strTxt) { this.strTxt = strTxt; } @Override public void run() { String result = sendPostDataToInternet(strTxt); mHandler.obtainMessage(REFRESH_DATA,result).sendToTarget(); } } } 這是PHP的部分: <?php header("Content-Type:text/html;charset=utf-8"); $data=$_POST['data']; echo "data=".$data; ?> 還煩請各位大大指點 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.128.80.193 ※ 文章網址: https://www.ptt.cc/bbs/AndroidDev/M.1440046898.A.923.html

08/20 13:26, , 1F
1. 加log看.....getStatusCode() 是不是200
08/20 13:26, 1F

08/20 13:27, , 2F
2. 加log看 strResult 是什麼
08/20 13:27, 2F

08/21 04:43, , 3F
為啥你會認為網頁能輸出你要的資料....?
08/21 04:43, 3F

08/21 04:43, , 4F
你load該網頁時是沒有接到post的啊
08/21 04:43, 4F

08/21 11:04, , 5F
你搞錯了,你把 echo 改成寫檔就知道有沒有了
08/21 11:04, 5F

08/21 16:55, , 6F
推薦你用httpbin.org去測試 就知道是哪邊的問題
08/21 16:55, 6F
文章代碼(AID): #1LrLyoaZ (AndroidDev)