2011-02-05 2 views
6

Решено: Отсутствует параметр просмотра для postData(), измененный для отражения этого.Android: отправка данных для хранения в MySQL

Мне нужна помощь в отправке данных GPS на сервер, который будет храниться в базе данных MySQL с использованием PHP.

Это внутри моего Java файла:

ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2); 

public void postData(View v) 
{ 
    nameValuePairs.add(new BasicNameValuePair("Lat","19.80")); 
    nameValuePairs.add(new BasicNameValuePair("Lon","13.22")); 

    //http post 
    try{ 
     HttpClient httpclient = new DefaultHttpClient(); 
     HttpPost httppost = new  
     HttpPost("http://www.xxxxxxxx.com/test.php"); 
     httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
     HttpResponse response = httpclient.execute(httppost); 
     HttpEntity entity = response.getEntity(); 
     InputStream is = entity.getContent(); 
     Log.i("postData", response.getStatusLine().toString()); 
    } 

    catch(Exception e) 
    { 
     Log.e("log_tag", "Error in http connection "+e.toString()); 
    }   
} 

И мой PHP:

<?php 
include 'connect.php'; //Connect 

//retrieve the data 
$lat = $_POST['lat']; 
$lon = $_POST['lon']; 

$sql = "INSERT INTO Coords (Lat, Lon) VALUES('$lat', '$lon')"; 

if (!mysql_query($sql, $sqlCon)) 
{ 
    die('Error: ' . mysql_error()); 
} 
else 
{ 
    //echo "1 record added"; 
} 

include 'closeConnection.php'; 
?> 

StackTrace: Project - Heat [Приложения для Android]

02-06 00:37:14.265: ERROR/AndroidRuntime(1607): FATAL EXCEPTION: main 
02-06 00:37:14.265: ERROR/AndroidRuntime(1607): java.lang.IllegalStateException: Could  
not find a method **postData(View)** in the activity class com.nathanhunston.heat.Main for 
onClick handler on view class android.widget.Button with id 'dropLocBtn' 
+0

Вы должны проверить свой вывод logcat и разместить здесь стек. –

+0

@ dave.c Отправленный трассировка, из того, что я вижу сразу, у меня есть незаконноеStateException, поэтому что-то делать с тем, что виртуальная машина не находится в правильном состоянии .... – nhunston

+0

Я не думаю, что это ваш логарифм журнала logcat , Вы можете использовать либо представление в eclipse, либо автономный инструмент для получения результата. Посмотрите на [эту ссылку] (http://developer.android.com/guide/developing/debug-tasks.html) для деталей. –

ответ

5

Первая строка вашего трассировки стека говорит вам именно то, что вы делаете неправильно:

02-06 00:37:14.265: ERROR/AndroidRuntime(1607): FATAL EXCEPTION: main 
02-06 00:37:14.265: ERROR/AndroidRuntime(1607): java.lang.IllegalStateException: Could not find a method postData(View) in the activity class com.nathanhunston.heat.Main for onClick handler on view class android.widget.Button with id 'dropLocBtn' 

это потому, что вы не имеете View в объявлении метода postData().

+0

Да, я просто заметил это, когда прочитал его правила D logcat. – nhunston

+2

@Herly: Да, иногда мне жаль, что прямой прямой нервный интерфейс от LogCat прямо к моему мозгу. OTOH, LogCat довольно болтливый, а другие голоса внутри моей головы будут ревновать. – CommonsWare

+0

И мы хотели бы, чтобы сейчас. – nhunston

0

Вы добавили <uses-permission android:name="android.permission.INTERNET"></uses-permission> в manifest.xml?

+0

Да, я пытаюсь отправить GPS-координаты в базу данных, которую нужно сохранить, я могу получить доступ к местоположению, у меня просто есть настоящая головная боль, отправляющая на сервер любую форму данных. – nhunston

+0

Да, что ... у вас есть эта линия в вашем манифесте? Проверьте Logcat на стеке в перспективе Debug и разместите его. – techiServices

+0

Жаль, что я не был ясен, да, у меня есть строка в файле манифеста. – nhunston

0

Я думаю, вы должны назвать его в потоке ... если сервер висит немного, чтобы ответить, вы получите принудительное закрытие сообщения ...

Вы можете посмотреть на этот пост: Problem with Android HTTP POST

+0

Спасибо, я сейчас прочитаю об этом. – nhunston

0

я думаю, что проблема в том, что в строке "nameValuePairs.add (новый BasicNameValuePair (" Шир " "19,80"));" вы использовали Lat и в строке $ _POST [ 'ш'] ;, вы использовали lat. поэтому Lat и lat - это разные вещи. Кстати, вот хорошая статья, http://androidtheme.wordpress.com/2011/02/20/connect-android-device-to-mysql/. Это действительно работает, я надеюсь, вам понравится.

Смежные вопросы