» 首頁 » 討論區 » Android程式設計 »android 傳資料到 xxx.php

android 傳資料到 xxx.php

發表人: clndbt
積分: 16
發表時間: 2012-03-06 15:56:35
我現在想寫一個APP 但卡在註冊的程式的地方

我試著先測試把資料丟到PHP上在網路上參考了幾個但都是類似利用 httprequest的方法
但我跑出來的都沒東西 toast卻一直跳 hostname may not be null

請問有人可以回答我關於這方面的問題嗎? 謝謝


[sea:javaCode]

public class Queue_001_Activity extends Activity implements OnClickListener {

private EditText txtMessage;
private Button sendBtn;
private String uriAPI = "http://xxx.xxx.xxx.xxx:3306/apptest.php";


@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.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)
{
String msg = null;
if (txtMessage != null)
{
msg = txtMessage.getEditableText().toString();

String result = sendPostDataToInternet(msg);

if(result != null)
Toast.makeText(this, result, Toast.LENGTH_LONG);

}
}

}

private String sendPostDataToInternet(String massage) {
/*connect link*/
HttpPost httpRequest =new HttpPost(uriAPI);

//Post 傳送變數必須用NameValuePair[ ]陣列儲存

List<NameValuePair> params = new ArrayList<NameValuePair>();

params.add(new BasicNameValuePair("data",massage));
//.php/?data = msg

try
{
//http request 為UTF﹣8編碼
httpRequest.setEntity(new UrlEncodedFormEntity (params,HTTP.UTF_8));

//get http request

HttpResponse httpResponse =new DefaultHttpClient().execute(httpRequest);

//conditon 200 ok?

if(httpResponse.getStatusLine().getStatusCode() == 200)
{
//get response string
String strResult = EntityUtils.toString(httpResponse.getEntity());

//return response string
return strResult;
}


}catch (ClientProtocolException e)
{
Toast.makeText(this, e.getMessage().toString(), Toast.LENGTH_LONG).show();

e.printStackTrace();
}catch(Exception e)
{
Toast.makeText(this, e.getMessage().toString(), Toast.LENGTH_SHORT).show();

e.printStackTrace();
}


return null;
}
}

[/sea]
發表人: 訪客
發表時間: 2012-03-06 22:20:36
你該不會是用127.0.0.1的IP吧?
Android和Server在同一臺的話要用10.0.2.2
發表人: clndbt
積分: 16
發表時間: 2012-03-07 15:47:02
謝謝你 我不是用local host
我是連到另一台有IP的電腦上面的MYSQL
但出現這個'hostname..... ' 這個回應讓我不知道問題是出在哪
發表人: 訪客
發表時間: 2012-03-08 08:23:40
MySQL??
你應該是連到PHP才對…
PHP不是MySQL

3306的Port是MySQL用的,不應該走HTTP
預設的話應該是Port 80才是 (你把3306改80看看)
還是你PHP的Port有改成3306
發表人: clndbt
積分: 16
發表時間: 2012-03-08 17:40:03
謝謝你 說傳到MYSQL 是筆誤
不過改掉3306...換80Port 後 send完變成crash...
而且改回3306 也crash了....
發表人: 訪客
發表時間: 2012-03-12 08:37:36
不會你沒有加入android.permission.INTERNET這個權限吧?
發表人: clndbt
積分: 16
發表時間: 2012-03-13 01:43:13
有的..

真的不知道問題在哪 囧...
發表人: 訪客
發表時間: 2012-03-13 14:18:35
我試了一下,你的Function的OK的

[sea:javaCode]

private String uriAPI = "http://www.yahoo.com.tw/";
private String sendPostDataToInternet(String massage) {
/* connect link */
HttpPost httpRequest = new HttpPost(uriAPI);
List<NameValuePair> params = new ArrayList<NameValuePair>();

params.add(new BasicNameValuePair("data", massage));
try {
httpRequest.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));
HttpResponse httpResponse = new DefaultHttpClient()
.execute(httpRequest);
if (httpResponse.getStatusLine().getStatusCode() == 200) {
// get response string
String strResult = EntityUtils.toString(httpResponse
.getEntity());
return strResult;
}

} catch (ClientProtocolException e) {
Toast.makeText(this, e.getMessage().toString(), Toast.LENGTH_LONG)
.show();
e.printStackTrace();
} catch (Exception e) {
Toast.makeText(this, e.getMessage().toString(), Toast.LENGTH_SHORT)
.show();
e.printStackTrace();
}
return null;
}
[/sea]

所以問題可能在你的Layout或是網路上,你是手機跑? 有網路嗎?
發表人: clndbt
積分: 16
發表時間: 2012-03-13 20:37:56
感謝樓上

我還沒有試過用手機 只是用simulator跑

不過我Intent到GOOGLE的broswer是可以的

所以猜測網路應該是沒有問題 (晚點再用手機試試

LAYOUT部份 僅一button 及 EditText 測試

getText 到 message 而已 可執行 無錯

重點是 hostname may not be null 不知道是為什麼
發表人: 訪客
發表時間: 2012-03-13 22:53:18
hostname may not be null 看來是找不到/無法連到主機
你試看看用http://www.google.com.tw/或http://www.yahoo.com.tw
看看,先排除Android程式的問題 :)
發表人: clndbt
積分: 16
發表時間: 2012-03-18 19:16:19
感覺上是版本問題...我現在用同樣的code 換成2.2版本 就不會出現null

但是..變成connect IP:xxx.xxx.xxx refused
(我是用固定IP 不是127....或localhost...)

我用另一台電腦連網頁.PHP是可以的 防火牆也關掉了....他為什麼會一直拒絕我...

查到整個頭痛了....