Android 台灣中文網

標題: 【急】為什麼HTTP Request無法對PHP存取? [打印本頁]

作者: abcd30282000    時間: 2013-4-3 21:09
標題: 【急】為什麼HTTP Request無法對PHP存取?
我想要簡單設計一個 Android 系統登入的介面

可是為什麼一直沒有辦法連上?

程式碼我也是直接複製網路上的範例

發文的人都說可以

可是我實際執行起來卻不行

我也有在 AndroidManifest 加入存取網路的 permission

程式碼如下:

---------------------------------
public class MainActivity extends Activity {
private static final String URL = "http://140.121.196.8/WS/login.php";
private EditText valueA;
private EditText valueB;
private Button button1;

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

valueA = (EditText) findViewById(R.id.editText1);
valueB = (EditText) findViewById(R.id.editText2);
button1 = (Button) findViewById(R.id.button1);

button();
}

private void button() {
button1.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View arg0) {
HttpClient client = new DefaultHttpClient();
try {
HttpPost post = new HttpPost(URL);
List< NameValuePair> vars=new ArrayList< NameValuePair>();
vars.add(new BasicNameValuePair("account",valueA.getText().toString()));
vars.add(new BasicNameValuePair("password",valueB.getText().toString()));
post.setEntity(new UrlEncodedFormEntity(vars,HTTP.UTF_8));

ResponseHandler< String> h=new BasicResponseHandler();
String response=new String(client.execute(post,h).getBytes(),HTTP.UTF_8);
Toast.makeText(getApplicationContext(), response, Toast.LENGTH_LONG).show();
} catch (Exception e) {
Toast.makeText(getApplicationContext(), "沒有回應。", Toast.LENGTH_LONG).show();
}
}
});
}
}
---------------------------------

程式跑出來都只會直接到 catch 那邊用 Toast 顯示「沒有回應。」

好像都沒有進入到 try 的部分

怎麼會這樣?
作者: whl    時間: 2013-4-3 21:09
請善用 thread 來存取 網路。
作者: whl    時間: 2013-4-4 08:29
那是因為 android 版本的問題,新版不支援 ui 下存取網路。
作者: xjxuvup    時間: 2013-4-9 08:19
Android 3.0以後在onCreate裡面執行網路動作的話,Android會丟出一個Exception,叫做NetworkOnMainThreadException,如果你在3.0以上的機子上跑,就會出現無法讀取得結果,遇到這種問題,有兩三種解決方式,第一種就是樓上講的使用執行緒,第二種是在onCreate加入一段語法,第三種我沒印象了,相關的資料你可以把例外的名字,key到google查解決方式
作者: whl    時間: 2013-4-9 19:39
第三種應該就是 android:targetSdkVersion設定成10或9啦。




歡迎光臨 Android 台灣中文網 (https://apk.tw/) Powered by Discuz! X3.1