Я пытаюсь использовать приложение для Android, которое передает некоторые данные во внешнюю базу данных, но почему-то я не могу заставить его работать. Даже с фиктивными данными это не работает, хотя ошибки не отображаются.
sqlInsert.php (я вставил фиктивные данные в строку прямо сейчас, хотел посмотреть, работает ли это).
<?php
$con = $con = mysql_connect("localhost","root","xxxxxxxx");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("medicijncheck", $con);
$medicijnid = $_POST['medicijnid'];
$dokterid = $_POST['dokterid'];
$patientid = $_POST['patientid'];
$dagmaand = $_POST['dagmaand'];
$Ingenomen = $_POST['Ingenomen'];
$query_search = "INSERT INTO medicijncheck(medicijnid, dokterid, patientid, dagmaand, Ingenomen) VALUES('2', '2', '3', '2004/02/02', '2');
mysql_query($query_search,$con);
// if (!mysql_query($query_search,$con))
// {
// die('Error: ' . mysql_error());
// }
//die(print_r($_POST));
mysql_close($con);
?>
Android-метод:
public void submitMed() {
try {
DefaultHttpClient httpClient = new DefaultHttpClient();
url2 = new HttpPost("link to sqlInsert");
// Add your data
nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new BasicNameValuePair("medicijnid", String.valueOf(MainActivity.medicijnID)));
nameValuePairs.add(new BasicNameValuePair("dokterid", String.valueOf(MainActivity.dokterNumber)));
nameValuePairs.add(new BasicNameValuePair("patientid", String.valueOf(MainActivity.patientNumber)));
nameValuePairs.add(new BasicNameValuePair("dagmaand", datum));
nameValuePairs.add(new BasicNameValuePair("Ingenomen", "true"));
url2.setEntity(new UrlEncodedFormEntity(nameValuePairs));
// Execute HTTP Post Request
// Hier gaat ie kapot
response = httpclient.execute(url2);
inputStream = response.getEntity().getContent();
data = new byte[256];
buffer = new StringBuffer();
int len = 0;
while (-1 != (len = inputStream.read(data)) )
{
buffer.append(new String(data, 0, len));
}
inputStream.close();
}
catch (Exception e)
{
Log.e("Nuh", "This isn't working");
}
}
Я получаю журнал, что попытка в trycatch не удалась.
Спасибо за связку!
Редактировать: Stacktrace:
05-19 15:37:47.077 19787-19787/? E/Nuh﹕ NOPE
05-19 15:37:47.077 779-1101/? E/AudioTrack﹕ AudioTrack::set : Exit
05-19 15:37:47.077 19787-19787/? W/System.err﹕ java.lang.NullPointerException: Attempt to invoke interface method 'org.apache.http.HttpResponse org.apache.http.client.HttpClient.execute(org.apache.http.client.methods.HttpUriRequest)' on a null object reference
05-19 15:37:47.078 19787-19787/? W/System.err﹕ at com.everywhereim.nfcpoc.MedReg.submitMed(MedReg.java:55)
05-19 15:37:47.078 19787-19787/? W/System.err﹕ at com.everywhereim.nfcpoc.MainActivity.onClick(MainActivity.java:260)
05-19 15:37:47.078 19787-19787/? W/System.err﹕ at android.view.View.performClick(View.java:4756)
05-19 15:37:47.078 19787-19787/? W/System.err﹕ at android.view.View$PerformClick.run(View.java:19748)
05-19 15:37:47.078 19787-19787/? W/System.err﹕ at android.os.Handler.handleCallback(Handler.java:739)
05-19 15:37:47.078 19787-19787/? W/System.err﹕ at android.os.Handler.dispatchMessage(Handler.java:95)
05-19 15:37:47.078 19787-19787/? W/System.err﹕ at android.os.Looper.loop(Looper.java:135)
05-19 15:37:47.078 19787-19787/? W/System.err﹕ at android.app.ActivityThread.main(ActivityThread.java:5254)
05-19 15:37:47.078 19787-19787/? W/System.err﹕ at java.lang.reflect.Method.invoke(Native Method)
05-19 15:37:47.078 19787-19787/? W/System.err﹕ at java.lang.reflect.Method.invoke(Method.java:372)
05-19 15:37:47.080 19787-19787/? W/System.err﹕ at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:898)
05-19 15:37:47.080 19787-19787/? W/System.err﹕ at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:693)
Я изменил код PHP на MySQLi, и после помещения кода Java в отдельный поток все заработало. Я просто забыл заполнить некоторые значения.
Спасибо всем за помощь.
Других решений пока нет …