android 傳資料到 xxx.php
發表人:
clndbt
積分: 16
積分: 16
我現在想寫一個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]
我試著先測試把資料丟到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]
發表人:
訪客
你該不會是用127.0.0.1的IP吧?
Android和Server在同一臺的話要用10.0.2.2
Android和Server在同一臺的話要用10.0.2.2
發表人:
clndbt
積分: 16
積分: 16
謝謝你 我不是用local host
我是連到另一台有IP的電腦上面的MYSQL
但出現這個'hostname..... ' 這個回應讓我不知道問題是出在哪
我是連到另一台有IP的電腦上面的MYSQL
但出現這個'hostname..... ' 這個回應讓我不知道問題是出在哪
發表人:
訪客
MySQL??
你應該是連到PHP才對…
PHP不是MySQL
3306的Port是MySQL用的,不應該走HTTP
預設的話應該是Port 80才是 (你把3306改80看看)
還是你PHP的Port有改成3306
你應該是連到PHP才對…
PHP不是MySQL
3306的Port是MySQL用的,不應該走HTTP
預設的話應該是Port 80才是 (你把3306改80看看)
還是你PHP的Port有改成3306
發表人:
clndbt
積分: 16
積分: 16
謝謝你 說傳到MYSQL 是筆誤
不過改掉3306...換80Port 後 send完變成crash...
而且改回3306 也crash了....
不過改掉3306...換80Port 後 send完變成crash...
而且改回3306 也crash了....
發表人:
訪客
不會你沒有加入android.permission.INTERNET這個權限吧?
發表人:
clndbt
積分: 16
積分: 16
有的..
真的不知道問題在哪 囧...
真的不知道問題在哪 囧...
發表人:
訪客
我試了一下,你的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或是網路上,你是手機跑? 有網路嗎?
[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
積分: 16
感謝樓上
我還沒有試過用手機 只是用simulator跑
不過我Intent到GOOGLE的broswer是可以的
所以猜測網路應該是沒有問題 (晚點再用手機試試
LAYOUT部份 僅一button 及 EditText 測試
getText 到 message 而已 可執行 無錯
重點是 hostname may not be null 不知道是為什麼
我還沒有試過用手機 只是用simulator跑
不過我Intent到GOOGLE的broswer是可以的
所以猜測網路應該是沒有問題 (晚點再用手機試試
LAYOUT部份 僅一button 及 EditText 測試
getText 到 message 而已 可執行 無錯
重點是 hostname may not be null 不知道是為什麼
發表人:
訪客
hostname may not be null 看來是找不到/無法連到主機
你試看看用http://www.google.com.tw/或http://www.yahoo.com.tw
看看,先排除Android程式的問題 :)
你試看看用http://www.google.com.tw/或http://www.yahoo.com.tw
看看,先排除Android程式的問題 :)
發表人:
clndbt
積分: 16
積分: 16
感覺上是版本問題...我現在用同樣的code 換成2.2版本 就不會出現null
但是..變成connect IP:xxx.xxx.xxx refused
(我是用固定IP 不是127....或localhost...)
我用另一台電腦連網頁.PHP是可以的 防火牆也關掉了....他為什麼會一直拒絕我...
查到整個頭痛了....
但是..變成connect IP:xxx.xxx.xxx refused
(我是用固定IP 不是127....或localhost...)
我用另一台電腦連網頁.PHP是可以的 防火牆也關掉了....他為什麼會一直拒絕我...
查到整個頭痛了....