作者sky8031358 (唤月枫晴)
看板AndroidDev
标题[问题] Android和php连接问题
时间Thu Aug 20 13:01:35 2015
小的我参考:
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://webptt.com/cn.aspx?n=bbs/AndroidDev/M.1440046898.A.923.html
1F:→ loxyz: 1. 加log看.....getStatusCode() 是不是200 08/20 13:26
2F:→ loxyz: 2. 加log看 strResult 是什麽 08/20 13:27
3F:→ stevekevin10: 为啥你会认为网页能输出你要的资料....? 08/21 04:43
4F:→ stevekevin10: 你load该网页时是没有接到post的啊 08/21 04:43
5F:推 ckvir: 你搞错了,你把 echo 改成写档就知道有没有了 08/21 11:04
6F:→ y3k: 推荐你用httpbin.org去测试 就知道是哪边的问题 08/21 16:55