У меня есть сервер, и я использую следующую ссылку для отправки данных в моей БД
Чтобы вести запись времени ввода транспортного средства, теперь я хочу опубликовать те же данные с Android, для которых я использую следующий код:
Кнопка "Внутри":
button.setOnClickListener(new View.OnClickListener() {
//Toast.makeText(getApplicationContext(),"Data is tried!", Toast.LENGTH_LONG).show();
public void onClick(View v)
{
new Thread(new Runnable() {
public void run() {
postData();
}
}).start();
}
});
И моя функция PostData определена ниже:
public void postData() {
// Create a new HttpClient and Post Header
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("url.php");
try {
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new BasicNameValuePair("vhc", "ABC124"));
nameValuePairs.add(new BasicNameValuePair("mobile", "089944440000"));
nameValuePairs.add(new BasicNameValuePair("time", "2014-12-28 22:22:52"));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
// Execute HTTP Post Request
HttpResponse response = httpclient.execute(httppost);
} catch (ClientProtocolException e) {
message = e.getMessage();
// TODO Auto-generated catch block
} catch (IOException e) {
message= e.getMessage();
// TODO Auto-generated catch block
}
}
Теперь я попытался отладить и обнаружил, что он не работает в HttpResponse response = httpclient.execute(httppost); шаг и приводит к IOException, пожалуйста, укажите мою ошибку, чтобы решить проблему. Благодарю!
В вашем текущем решении вы создаете поток, но поток выполняет код последовательно, и он не ждет ответа с вашего сервера. В результате ваш клиент получает нулевой ответ.
Решение: вы должны использовать AsyncTask для извлечения/отправки данных с/на сервер. Выполнить извлечение данных в методе doBackground для AsyncTask. И получите ответ от метода postExecute. См. Подробности здесь