这是我的班级。在OnClick方法中,我试图将数据发布到远程数据库,但没有任何事情发生。我完全不知道为什么。没有错误,没有行动。根本不值一提。欢迎任何答案。请帮忙。
public class Wyslij extends Activity {
protected static final int TIMEOUT_MILLISEC = 5000;
ImageButton ib_wyslij;
int suma_zam;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.wyslij);
ib_wyslij = (ImageButton) findViewById(R.id.ib_wyslij);
final Zamowienie zam = new Zamowienie();
String suma_zamowienia = podaj_sume(TowarZamowienie.towary_zamowione);
if(suma_zamowienia != null && !suma_zamowienia.equalsIgnoreCase("")){
suma_zam = Integer.parseInt(suma_zamowienia);
zam.suma=suma_zam;}
zam.suma=suma_zam;
TowarZamowienie tz = new TowarZamowienie();
ib_wyslij.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
try {
JSONObject json = new JSONObject();
json.put("Zam_suma", zam.getSuma());
HttpParams httpParams = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParams,
TIMEOUT_MILLISEC);
HttpConnectionParams.setSoTimeout(httpParams, TIMEOUT_MILLISEC);
HttpClient client = new DefaultHttpClient(httpParams);
//
//String url = "http://10.0.2.2:8080/sample1/webservice2.php?" +
// "json={\"UserName\":1,\"FullName\":2}";
String url = "http://www.msinzynierka.cba.pl/executeConn.php";
HttpPost request = new HttpPost(url);
request.setEntity(new ByteArrayEntity(json.toString().getBytes(
"UTF8")));
request.setHeader("json", json.toString());
HttpResponse response = client.execute(request);
HttpEntity entity = response.getEntity();
// If the response does not enclose an entity, there is no need
} catch (Throwable t) {
}
//sendAccelerationData(zam);
}
});
}
private String podaj_sume(ArrayList<Towar> l) {
int suma = 0;
String s = null;
for (int i = 0; i < l.size(); i++) {
suma += l.get(i).Tow_ilosc * l.get(i).Tow_cena;
}
return s = String.valueOf(suma);
}
}
答案 0 :(得分:2)
不要捕获一般异常并且不打印它 - 这样,如果发生异常,您将不会得到任何提示。只需将throwable更改为exception并调用yourException.printStacktrace();
我敢打赌,你得到的例外是NetworkingOnMainThreadException
。网络操作往往需要一些时间,这就是为什么禁止在Android的主(ui)线程上执行此类操作的原因。这会使UI无响应,从而导致非常糟糕的用户体验。
查看AsyncTask
以便将操作优雅地移动到后台线程。